Conflicto al adaptar Activity Bar a PersonalMessage.template

Started by FirstName LastName, March 15, 2016, 04:10:07 PM

Previous topic - Next topic

FirstName LastName

Quote from: Dwight Kurt Schrute III on March 31, 2016, 10:52:03 AM
Puedes ser un poco más proactivo, ver lo que el mod hace y como lo hace, ver que cambios realiza, hacer tus propios cambios, ver que archivos incluye, ver si hay errores en tu log de errores, en el log de errores de tu servidor etc.... lamento no poder ayudarte y seguramente es algo muy simple de resolver pero simplemente no tengo timepo suficiente para hacerlo por ti.

Gracias por dejar tu comentario. He estado fijándome pero realmente no logro dar con el problema. No estoy teniendo ningún error.


Suki

¿Ya te fijaste si hay algún error?  ¿ya probaste con distintas configuraciones?   ¿que cambios has hecho?  ¿como están modificados tus archivos?   ¿Estás seguro de que el archivo Sources/ActivityBar.php está incluido cuando intentas acceder a la función Activity_Bar()?

He hecho los cambios que te mencioné y el key 'Activity_Bar' aparece en mi personalMessage.template.php  sin problemas lo que indica que no has hecho los cambios correspondientes en los archivos necesarios.


Para poder ayudarte es necesario que expongas claramente que es lo que has hecho y que no, no das muchos detalles para poder ayudarte.


Lo siento, pero si no das más detalles va a ser muy difícil poder ayudarte, no importa cuantas veces revivas tu mensaje...
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

FirstName LastName

Quote from: Suki on April 02, 2016, 01:50:08 PM
¿Ya te fijaste si hay algún error?

Sí. Tal como tengo ahora los archivos estoy recibiendo, cada vez que ingreso a los mensajes el siguiente error:

Quotehttp://localhost/foro/index.php?action=pm
8: Undefined variable: subject
C:/XAMPP/htdocs/foro/Sources/PersonalMessage.php
Línea: 1038

Quote from: Suki on April 02, 2016, 01:50:08 PM
¿ya probaste con distintas configuraciones?  ¿que cambios has hecho?

Sí. He probado de varias maneras. En estos últimos días noté que en el archivo de sources, en la función prepareMessageContext había dos $output con arrays, yo había definido solo en el primero el Activity_Bar, procedí como se ve en el código más adelante a ponerlo en ambos y ahora a través del var_dump() logré ver lo siguiente, que antes sin ésto no aparecía:

Quote[...] ["Activity_Bar"]=> bool(false) }

De todas maneras, sigue sin aparecer la maravillosa barra de actividad. :laugh:

Ahora que analizo bien el archivo de sources, desconozco si también tenga que agregar el Activity_Bar en la parte donde se definen todos los $memberContext[$message['id_member_from']], y si habría que hacerlo no sé de qué manera iría.

Quote from: Suki on April 02, 2016, 01:50:08 PM
¿como están modificados tus archivos?

Ahora mismo, así:

PersonalMessage.php (function prepareMessageContext)
// Get a personal message for the theme.  (used to save memory.)
function prepareMessageContext($type = 'subject', $reset = false)
{
global $txt, $scripturl, $modSettings, $context, $messages_request, $memberContext, $recipients, $smcFunc;
global $user_info, $subjects_request;

// Count the current message number....
static $counter = null;
if ($counter === null || $reset)
$counter = $context['start'];

static $temp_pm_selected = null;
if ($temp_pm_selected === null)
{
$temp_pm_selected = isset($_SESSION['pm_selected']) ? $_SESSION['pm_selected'] : array();
$_SESSION['pm_selected'] = array();
}

// If we're in non-boring view do something exciting!
if ($context['display_mode'] != 0 && $subjects_request && $type == 'subject')
{
$subject = $smcFunc['db_fetch_assoc']($subjects_request);
if (!$subject)
{
$smcFunc['db_free_result']($subjects_request);
return false;
}

$subject['subject'] = $subject['subject'] == '' ? $txt['no_subject'] : $subject['subject'];
censorText($subject['subject']);

$output = array(
'id' => $subject['id_pm'],
'member' => array(
'id' => $subject['id_member_from'],
'name' => $subject['from_name'],
'link' => $subject['not_guest'] ? '<a href="' . $scripturl . '?action=profile;u=' . $subject['id_member_from'] . '">' . $subject['from_name'] . '</a>' : $subject['from_name'],
),
'recipients' => &$recipients[$subject['id_pm']],
'subject' => $subject['subject'],
'time' => timeformat($subject['msgtime']),
'timestamp' => forum_time(true, $subject['msgtime']),
'number_recipients' => count($recipients[$subject['id_pm']]['to']),
'labels' => &$context['message_labels'][$subject['id_pm']],
'fully_labeled' => count($context['message_labels'][$subject['id_pm']]) == count($context['labels']),
'is_replied_to' => &$context['message_replied'][$subject['id_pm']],
'is_unread' => &$context['message_unread'][$subject['id_pm']],
'is_selected' => !empty($temp_pm_selected) && in_array($subject['id_pm'], $temp_pm_selected),
'Activity_Bar' => Activity_Bar($subject['id_member_from']),
);

return $output;
}

// Bail if it's false, ie. no messages.
if ($messages_request == false)
return false;

// Reset the data?
if ($reset == true)
return @$smcFunc['db_data_seek']($messages_request, 0);

// Get the next one... bail if anything goes wrong.
$message = $smcFunc['db_fetch_assoc']($messages_request);
if (!$message)
{
if ($type != 'subject')
$smcFunc['db_free_result']($messages_request);

return false;
}

// Use '(no subject)' if none was specified.
$message['subject'] = $message['subject'] == '' ? $txt['no_subject'] : $message['subject'];

// Load the message's information - if it's not there, load the guest information.
if (!loadMemberContext($message['id_member_from'], true))
{
$memberContext[$message['id_member_from']]['name'] = $message['from_name'];
$memberContext[$message['id_member_from']]['id'] = 0;
// Sometimes the forum sends messages itself (Warnings are an example) - in this case don't label it from a guest.
$memberContext[$message['id_member_from']]['group'] = $message['from_name'] == $context['forum_name'] ? '' : $txt['guest_title'];
$memberContext[$message['id_member_from']]['link'] = $message['from_name'];
$memberContext[$message['id_member_from']]['email'] = '';
$memberContext[$message['id_member_from']]['show_email'] = showEmailAddress(true, 0);
$memberContext[$message['id_member_from']]['is_guest'] = true;
}
else
{
$memberContext[$message['id_member_from']]['can_view_profile'] = allowedTo('profile_view_any') || ($message['id_member_from'] == $user_info['id'] && allowedTo('profile_view_own'));
$memberContext[$message['id_member_from']]['can_see_warning'] = !isset($context['disabled_fields']['warning_status']) && $memberContext[$message['id_member_from']]['warning_status'] && ($context['user']['can_mod'] || (!empty($modSettings['warning_show']) && ($modSettings['warning_show'] > 1 || $message['id_member_from'] == $user_info['id'])));
}

// Censor all the important text...
censorText($message['body']);
censorText($message['subject']);

// Run UBBC interpreter on the message.
$message['body'] = parse_bbc($message['body'], true, 'pm' . $message['id_pm']);

// Send the array.
$output = array(
'alternate' => $counter % 2,
'id' => $message['id_pm'],
'member' => &$memberContext[$message['id_member_from']],
'subject' => $message['subject'],
'time' => timeformat($message['msgtime']),
'timestamp' => forum_time(true, $message['msgtime']),
'counter' => $counter,
'body' => $message['body'],
'recipients' => &$recipients[$message['id_pm']],
'number_recipients' => count($recipients[$message['id_pm']]['to']),
'labels' => &$context['message_labels'][$message['id_pm']],
'fully_labeled' => count($context['message_labels'][$message['id_pm']]) == count($context['labels']),
'is_replied_to' => &$context['message_replied'][$message['id_pm']],
'is_unread' => &$context['message_unread'][$message['id_pm']],
'is_selected' => !empty($temp_pm_selected) && in_array($message['id_pm'], $temp_pm_selected),
'Activity_Bar' => Activity_Bar($subject['id_member_from']),
);

$counter++;

return $output;
}


PersonalMessage.template.php (function template_folder)
/* Activity Bar Mod */
var_dump($message);
if(!empty($modSettings['Activity_Bar_enable']) && !empty($modSettings['Activity_Bar_show_in_posts']) && !empty($message['Activity_Bar']))
echo '
<li class="activity_li">', !empty($modSettings['Activity_Bar_label']) , '
<div class="activity_holder" style="width: ', !empty($modSettings['Activity_Bar_max_width']) ? $modSettings['Activity_Bar_max_width'] : 139, 'px;">
<div class="activity_bar" style="width: ', $message['Activity_Bar']['width'], 'px;">
<div class="activity_percentage">', $message['Activity_Bar']['percentage'], '%
</div></div></div></li>';
/* Activity Bar Mod */


Si no es una molestia para vos, me gustaría saber cómo tenés los tuyos para deducir cuál pueda llegar a ser mi error.

Gracias.

Suki

En tu archivo Sources/PersonalMessage.php

'Activity_Bar' => Activity_Bar($subject['id_member_from']),


debe de ser

'Activity_Bar' => Activity_Bar($message['id_member_from']),


si ya sé qe yo te dije que lo pusieras así, lo hice con prisa y sin fijarme, pero tu que tienes más tiempo puedes ver que ese array usa la variable $message


y por ultimo en tu archivo Sources/ActivityBar.php encuentra esto:

if(!empty($modSettings['Activity_Bar_enable']) && isset($_REQUEST['topic']) || isset($_REQUEST['action']) && $_REQUEST['action'] == 'profile')

y cambialo por esto:

if(!empty($modSettings['Activity_Bar_enable']) && (isset($_REQUEST['topic']) || isset($_REQUEST['action']) && $_REQUEST['action'] == 'profile') || isset($_REQUEST['action']) && $_REQUEST['action'] == 'pm')
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

FirstName LastName

Quote from: Suki on April 05, 2016, 10:40:48 AM
En tu archivo Sources/PersonalMessage.php

'Activity_Bar' => Activity_Bar($subject['id_member_from']),


debe de ser

'Activity_Bar' => Activity_Bar($message['id_member_from']),


si ya sé qe yo te dije que lo pusieras así, lo hice con prisa y sin fijarme, pero tu que tienes más tiempo puedes ver que ese array usa la variable $message


y por ultimo en tu archivo Sources/ActivityBar.php encuentra esto:

if(!empty($modSettings['Activity_Bar_enable']) && isset($_REQUEST['topic']) || isset($_REQUEST['action']) && $_REQUEST['action'] == 'profile')

y cambialo por esto:

if(!empty($modSettings['Activity_Bar_enable']) && (isset($_REQUEST['topic']) || isset($_REQUEST['action']) && $_REQUEST['action'] == 'profile') || isset($_REQUEST['action']) && $_REQUEST['action'] == 'pm')

Gracias por el soporte. Saludos.

Advertisement: