PDA

Zobacz pełną wersję : Ustawienie strefy czasowej dodaje minutę dodatkowo



szymon189
18-03-2012, 11:47
Zajmuję się komponentem JoomLeague (http://forum.joomleague.net/index.php). Problem jest ze strefą czasowoą. Gdy ustawimy strefę +1 i wpiszemy godzinę meczu np. 18:30, to na stronie pojawia nam się godzina: 18:31 (zostaje dodana 1 minuta)
Z forum angielskiego:

In the Joomla Global Configuration (backend) one can set the TimeZone of the server, in the Joomleague Administration Global Settings one can set the Standard Server Time Offset Correction, and in the project settings of each Joomleague project one can set a Server time offset specific for that project.
It is advised to check how these settings should be used, and if these settings are used properly throughout the whole core code. I added the use of the server offset setting of the project in the nextmatch model, but doubt if it is implemented correctly. At other places similar problems could be present.




Polski przykład:

Ustawiając strefe czasową projektu ma tu coś do rzeczy ale jak ustawiam +1 to np. w module następny mecz dodaje jedną minutę dodatkowo http://forum.joomleague.net/images/smilies/icon_smile.gif
5186

PeFik
18-03-2012, 12:25
Ustawnia globalne dotyczą godzin, a nie minut. Więc ?

nikszal
18-03-2012, 12:25
Nie znam tego komponentu, ponieważ nie jestem fanem piłki nożnej, szczególnie tej w wydaniu polskim.

Jeśli dolicza do czasu jedną minutę, to błąd tkwi w którymś z plików komponentu. Nie dziwiłbym się, gdyby występowały różnice w pełnych godzinach, ale minuta wskazują na błąd w funkcji. Nie mam pojęcia gdzie szukać tego błędu.

szymon189
18-03-2012, 12:31
Ustawnia globalne dotyczą godzin, a nie minut. Więc ?

Na forum komponentu odesłano mnie właśnie do tego tematu. Więc wkleiłem oba. Może to być błąd funkcji tak?
Plik form_date.php

<?php defined('_JEXEC') or die('Restricted access');
$imageTitle=JText::_('JL_ADMIN_PROJECT_INPUT_NEEDE D');
$imagePath='administrator/components/com_joomleague/assets/images/crystal_xedit_small.png';
$inputNeededImage='&nbsp;&nbsp;'.JHTML::image($imagePath,$im ageTitle,array('title' => $imageTitle));
?>
<fieldset class="adminform">
<legend><?php echo JText::_('JL_ADMIN_PROJECT_DATE_PARAMS'); ?></legend>
<table class="admintable">
<tr>
<td width="100" align="right" class="key"><?php echo JText::_('JL_ADMIN_PROJECT_STARTDATE'); ?></td>
<td><?php
$date=JFactory::getDate($this->project->start_date)->toFormat('%d-%m-%Y');
echo JHTML::calendar($date,'start_date','start_date','% d-%m-%Y','size="10" ');
?></td>
</tr>
<tr>
<td valign="top" align="right" class="key"><?php echo JText::_('JL_ADMIN_PROJECT_STARTTIME'); ?></td>
<td>
<input class="text_area" type="text" name="start_time" id="title" size="4" maxlength="5" value="<?php echo $this->project->start_time; ?>" />
</td>
</tr>
<tr>
<td valign="top" align="right" class="key"><?php echo JText::_('JL_ADMIN_SERVER_TIMEZONE'); ?></td>
<td>
<?php echo $this->lists['servertimezone']; ?>
</td>
</tr>
<tr>
<td valign="top" align="right" class="key"><?php echo JText::_('JL_ADMIN_JOOMLEAGUE_TIMEZONE'); ?></td>
<td>
<?php echo $this->lists['joomleaguetimezone']; ?>
</td>
</tr>
<tr>
<td valign="top" align="right" class="key"><?php echo JText::_('JL_ADMIN_PROJECT_TIMEZONE'); ?></td>
<td>
<?php echo $this->lists['projecttimezone']; ?>
</td>
</tr>
</table>
</fieldset>



function _initData()
{
// Lets load the content if it doesn't already exist
if (empty($this->_data))
{
$project = new stdClass();
$project->id = 0;

$project->name = null;
$project->league_id = 0;
$project->season_id = 0;

$project->admin = 62;
$project->editor = 62;

$project->master_template = 0;
$project->sub_template_id = 0;
$project->extension = null;

//global server timezone
$conf =& JFactory::getConfig();
$srvTimezone = $conf->getValue('config.offset');

//global joomleague timezone config setting
$params = JComponentHelper::getParams('com_joomleague');
$jlgTimezone = $params->get('cfg_standard_server_offset', $srvTimezone);

$project->serveroffset = $jlgTimezone;
$project->project_type = 0;

$project->teams_as_referees = 0;
$project->sports_type_id = 1;

$project->start_date = null;
$project->start_time = '15:30';

$project->current_round_auto = 1;
$project->current_round = 1;
$project->auto_time = 2880;

$project->game_regular_time = 90;

$project->game_parts = 2;
$project->halftime = 15;
$project->points_after_regular_time = '3,1,0';

$project->use_legs = null;

$project->allow_add_time = 0;
$project->add_time = 15;
$project->points_after_add_time = '3,1,0';
$project->points_after_penalty = '3,1,0';

$project->fav_team = null;
$project->fav_team_color = '';
$project->fav_team_text_color = '';
$project->fav_team_highlight_type = '';
$project->fav_team_text_bold = '';

$project->template = "default";

$project->enable_sb = null;
$project->sb_catid = 0;

$project->published = 0;
$project->ordering = 0;

$project->checked_out = 0;
$project->checked_out_time = 0;
$project->ordering = 0;
$project->alias = null;
$project->extended = '';
$project->modified = null;
$project->modified_by = null;
$project->picture = null;

$this->_data = $project;
return (boolean) $this->_data;
}

return true;
}

nikszal
18-03-2012, 12:38
Może to być błąd funkcji tak?
Przesunięcie czasu o jedną minutę nie bierze się z powietrza. Gdyby komponent korzystał jedynie z danych czasowych wprowadzonych do bazy, to tego przesunięcia nie byłoby. Jednak jest, więc jakaś funkcja dolicza do minut +1.
A co się dzieje, gdy mecz rozpoczyna się o pełnej godzinie, lub gdy wprowadzisz godzinę rozpoczęcia minutę przed czasem, np. 17:59?

szymon189
18-03-2012, 23:03
Zmienia się tylko minuta. Ustawione +1, godzina 18:59 na zapleczu, a na stronie mam 19:00. Ustawione +4, godzina 18:59, a na stronie jest 19:03.

nikszal
18-03-2012, 23:06
Ustaw +0.