示例#1
0
?>
				<option value="0"<?php 
if (TBGSettings::getGMToffset() == 0) {
    ?>
 selected<?php 
}
?>
>GMT/UTC</option>
				<?php 
for ($cc = 1; $cc <= 12; $cc++) {
    ?>
					<option value="<?php 
    echo $cc;
    ?>
"<?php 
    if (TBGSettings::getGMToffset() == $cc) {
        ?>
 selected<?php 
    }
    ?>
>GMT +<?php 
    echo $cc;
    ?>
</option>
				<?php 
}
?>
			</select>
		</td>
	</tr>
	<tr>
示例#2
0
/**
 * Returns a formatted string of the given timestamp
 *
 * @param integer $tstamp the timestamp to format
 * @param integer $format[optional] the format
 * @param integer $skiptimestamp
 */
function tbg_formatTime($tstamp, $format = 0)
{
    // offset the timestamp properly
    if (TBGSettings::getGMToffset() > 0) {
        $tstamp += TBGSettings::getGMToffset() * 60 * 60;
    } elseif (TBGSettings::getGMToffset() < 0) {
        $tstamp -= TBGSettings::getGMToffset() * 60 * 60;
    }
    if (TBGSettings::getUserTimezone() > 0) {
        $tstamp += TBGSettings::getUserTimezone() * 60 * 60;
    } elseif (TBGSettings::getUserTimezone() < 0) {
        $tstamp -= TBGSettings::getUserTimezone() * 60 * 60;
    }
    switch ($format) {
        case 1:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(1), $tstamp);
            break;
        case 2:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(2), $tstamp);
            break;
        case 3:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(3), $tstamp);
            break;
        case 4:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(4), $tstamp);
            break;
        case 5:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(5), $tstamp);
            break;
        case 6:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(6), $tstamp);
            break;
        case 7:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(7), $tstamp);
            break;
        case 8:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(8), $tstamp);
            break;
        case 9:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(9), $tstamp);
            break;
        case 10:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(10), $tstamp);
            break;
        case 11:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(9), $tstamp);
            break;
        case 12:
            $tstring = '';
            if (date('dmY', $tstamp) == date('dmY')) {
                $tstring .= __('Today') . ', ';
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') - 1))) {
                $tstring .= __('Yesterday') . ', ';
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') + 1))) {
                $tstring .= __('Tomorrow') . ', ';
            } else {
                $tstring .= strftime(TBGContext::getI18n()->getDateTimeFormat(12) . ', ', $tstamp);
            }
            $tstring .= strftime(TBGContext::getI18n()->getDateTimeFormat(14), $tstamp);
            break;
        case 13:
            $tstring = '';
            if (date('dmY', $tstamp) == date('dmY')) {
                //$tstring .= __('Today') . ', ';
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') - 1))) {
                $tstring .= __('Yesterday') . ', ';
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') + 1))) {
                $tstring .= __('Tomorrow') . ', ';
            } else {
                $tstring .= strftime(TBGContext::getI18n()->getDateTimeFormat(12) . ', ', $tstamp);
            }
            $tstring .= strftime(TBGContext::getI18n()->getDateTimeFormat(14), $tstamp);
            break;
        case 14:
            $tstring = '';
            if (date('dmY', $tstamp) == date('dmY')) {
                $tstring .= __('Today');
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') - 1))) {
                $tstring .= __('Yesterday');
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') + 1))) {
                $tstring .= __('Tomorrow');
            } else {
                $tstring .= strftime(TBGContext::getI18n()->getDateTimeFormat(12), $tstamp);
            }
            break;
        case 15:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(11), $tstamp);
            break;
        case 16:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(12), $tstamp);
            break;
        case 17:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(13), $tstamp);
            break;
        case 18:
            $old = date_default_timezone_get();
            date_default_timezone_set('UTC');
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(16), $tstamp);
            date_default_timezone_set($old);
            break;
        case 19:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(14), $tstamp);
            break;
        case 20:
            $tstring = '';
            if (date('dmY', $tstamp) == date('dmY')) {
                $tstring .= __('Today') . ' (' . strftime('%H:%M', $tstamp) . ')';
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') - 1))) {
                $tstring .= __('Yesterday') . ' (' . strftime('%H:%M', $tstamp) . ')';
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') + 1))) {
                $tstring .= __('Tomorrow') . ' (' . strftime('%H:%M', $tstamp) . ')';
            } else {
                $tstring .= strftime(TBGContext::getI18n()->getDateTimeFormat(15), $tstamp);
            }
            break;
        case 21:
            $tstring = TBGContext::isCLI() ? strftime('%a, %d %b %Y %H:%M:%S GMT', $tstamp) : strftime(TBGContext::getI18n()->getDateTimeFormat(17), $tstamp);
            if (TBGContext::getUser()->getTimezone() > 0) {
                $tstring .= '+';
            }
            if (TBGContext::getUser()->getTimezone() < 0) {
                $tstring .= '-';
            }
            if (TBGContext::getUser()->getTimezone() != 0) {
                $tstring .= TBGContext::getUser()->getTimezone();
            }
            break;
        case 22:
            $tstring = strftime(TBGContext::getI18n()->getDateTimeFormat(15), $tstamp);
            break;
        case 23:
            $tstring = '';
            if (date('dmY', $tstamp) == date('dmY')) {
                $tstring .= __('Today');
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') - 1))) {
                $tstring .= __('Yesterday');
            } elseif (date('dmY', $tstamp) == date('dmY', mktime(0, 0, 0, date('m'), date('d') + 1))) {
                $tstring .= __('Tomorrow');
            } else {
                $tstring .= strftime(TBGContext::getI18n()->getDateTimeFormat(15), $tstamp);
            }
            break;
        default:
            return $tstamp;
    }
    return htmlentities($tstring);
}
示例#3
0
 private function _fixTimestamps()
 {
     // Unlimited execution time
     set_time_limit(0);
     foreach (TBGScope::getAll() as $scope) {
         TBGContext::setScope($scope);
         // The first job is to work out the offsets that need applying
         $offsets = array('system', 'users');
         $offsets['users'] = array();
         $offsets['system'] = (int) TBGSettings::getGMToffset() * 3600;
         $settingstable = TBGSettingsTable::getTable();
         $crit = $settingstable->getCriteria();
         $crit->addWhere(TBGSettingsTable::NAME, 'timezone');
         $crit->addWhere(TBGSettingsTable::MODULE, 'core');
         $crit->addWhere(TBGSettingsTable::UID, 0, \b2db\Criteria::DB_NOT_EQUALS);
         $crit->addWhere(TBGSettingsTable::VALUE, 0, \b2db\Criteria::DB_NOT_EQUALS);
         $crit->addWhere(TBGSettingsTable::VALUE, 'sys', \b2db\Criteria::DB_NOT_EQUALS);
         $crit->addWhere(TBGSettingsTable::SCOPE, $scope->getID());
         $res = $settingstable->doSelect($crit);
         if ($res instanceof \b2db\Resultset) {
             while ($user = $res->getNextRow()) {
                 $offsets['users']['uid_' . $user->get(TBGSettingsTable::UID)] = (int) $user->get(TBGSettingsTable::VALUE) * 3600;
             }
         }
         // Now go through every thing which requires updating
         TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'publish' . DS . 'classes' . DS . 'B2DB');
         TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'publish' . DS . 'classes');
         // ARTICLE HISTORY
         $this->_fixUserDependentTimezone($offsets, TBGArticleHistoryTable::getTable(), TBGArticleHistoryTable::AUTHOR, TBGArticleHistoryTable::DATE, $scope);
         // ARTICLES
         $this->_fixUserDependentTimezone($offsets, TBGArticlesTable::getTable(), TBGArticlesTable::AUTHOR, TBGArticlesTable::DATE, $scope);
         // BUILDS
         $this->_fixNonUserDependentTimezone($offsets, TBGBuildsTable::getTable(), TBGBuildsTable::RELEASE_DATE, $scope, TBGBuildsTable::RELEASED);
         // COMMENTS
         $this->_fixUserDependentTimezone($offsets, TBGCommentsTable::getTable(), array('a' => TBGCommentsTable::POSTED_BY, 'b' => TBGCommentsTable::UPDATED_BY), array('a' => TBGCommentsTable::POSTED, 'b' => TBGCommentsTable::UPDATED), $scope);
         // EDITIONS
         $this->_fixNonUserDependentTimezone($offsets, TBGEditionsTable::getTable(), TBGEditionsTable::RELEASE_DATE, $scope, TBGEditionsTable::RELEASED);
         // ISSUES
         // This is a bit more complex so do this manually - we have to poke around with the issue log
         $table = TBGIssuesTable::getTable();
         $crit = $table->getCriteria();
         $crit->addWhere(TBGIssuesTable::SCOPE, $scope->getID());
         $crit->addWhere(TBGIssuesTable::DELETED, false);
         $res = $table->doSelect($crit);
         if ($res) {
             while ($row = $res->getNextRow()) {
                 $crit = TBGLogTable::getTable()->getCriteria();
                 $crit->addSelectionColumn(TBGLogTable::UID);
                 $crit->addWhere(TBGLogTable::CHANGE_TYPE, TBGLogTable::LOG_ISSUE_ASSIGNED);
                 $crit->addWhere(TBGLogTable::TARGET, $row->get(TBGIssuesTable::ID));
                 $crit->addWhere(TBGLogTable::TARGET_TYPE, TBGLogTable::TYPE_ISSUE);
                 $crit->addOrderBy(TBGLogTable::TIME, b2db\Criteria::SORT_DESC);
                 $crit->addOrderBy(TBGLogTable::ID, b2db\Criteria::SORT_DESC);
                 if ($row2 = TBGLogTable::getTable()->doSelectOne($crit)) {
                     $assigned_by = $row2->get(TBGLogTable::UID);
                 }
                 $crit = TBGLogTable::getTable()->getCriteria();
                 $crit->addSelectionColumn(TBGLogTable::UID);
                 $crit->addWhere(TBGLogTable::TARGET, $row->get(TBGIssuesTable::ID));
                 $crit->addWhere(TBGLogTable::TARGET_TYPE, TBGLogTable::TYPE_ISSUE);
                 $crit->addOrderBy(TBGLogTable::TIME, b2db\Criteria::SORT_DESC);
                 $crit->addOrderBy(TBGLogTable::ID, b2db\Criteria::SORT_DESC);
                 if ($row2 = TBGLogTable::getTable()->doSelectOne($crit)) {
                     $updated_by = $row2->get(TBGLogTable::UID);
                 }
                 unset($crit);
                 unset($row2);
                 if (array_key_exists('uid_' . $row->get(TBGIssuesTable::POSTED_BY), $offsets['users'])) {
                     $offset = $offsets['users']['uid_' . $row->get(TBGIssuesTable::POSTED_BY)];
                 } else {
                     $offset = $offsets['system'];
                 }
                 if (isset($updated_by) && array_key_exists('uid_' . $updated_by, $offsets['users'])) {
                     $offset2 = $offsets['users']['uid_' . $updated_by];
                 } elseif (isset($updated_by)) {
                     $offset2 = $offsets['system'];
                 }
                 if (isset($assigned_by) && array_key_exists('uid_' . $assigned_by, $offsets['users'])) {
                     $offset3 = $offsets['users']['uid_' . $assigned_by];
                 } elseif (isset($assigned_by)) {
                     $offset3 = $offsets['system'];
                 }
                 $crit2 = $table->getCriteria();
                 $crit2->addUpdate(TBGIssuesTable::POSTED, (int) $row->get(TBGIssuesTable::POSTED) + $offset);
                 if (isset($offset2)) {
                     $crit2->addUpdate(TBGIssuesTable::LAST_UPDATED, (int) $row->get(TBGIssuesTable::LAST_UPDATED) + $offset2);
                     unset($offset2);
                 }
                 if (isset($offset3)) {
                     $crit2->addUpdate(TBGIssuesTable::BEING_WORKED_ON_BY_USER_SINCE, (int) $row->get(TBGIssuesTable::BEING_WORKED_ON_BY_USER_SINCE) + $offset3);
                     unset($offset3);
                 }
                 $crit2->addWhere(TBGIssuesTable::ID, $row->get(TBGIssuesTable::ID));
                 $table->doUpdate($crit2);
             }
         }
         // LOG
         $this->_fixUserDependentTimezone($offsets, TBGLogTable::getTable(), TBGLogTable::UID, TBGLogTable::TIME, $scope);
         // MILESTONES
         // The conditions are a bit different here so do it manually
         $table = TBGMilestonesTable::getTable();
         $crit = $table->getCriteria();
         $crit->addWhere(TBGMilestonesTable::SCOPE, $scope->getID());
         $res = $table->doSelect($crit);
         if ($res) {
             while ($row = $res->getNextRow()) {
                 $offset = $offsets['system'];
                 $crit2 = $table->getCriteria();
                 $added = 0;
                 if ($row->get(TBGMilestonesTable::REACHED) > 0) {
                     $crit2->addUpdate(TBGMilestonesTable::REACHED, (int) $row->get(TBGMilestonesTable::REACHED) + $offset);
                     $added = 1;
                 }
                 if ($row->get(TBGMilestonesTable::SCHEDULED) > 0) {
                     $crit2->addUpdate(TBGMilestonesTable::SCHEDULED, (int) $row->get(TBGMilestonesTable::SCHEDULED) + $offset);
                     $added = 1;
                 }
                 if ($row->get(TBGMilestonesTable::STARTING) > 0) {
                     $crit2->addUpdate(TBGMilestonesTable::STARTING, (int) $row->get(TBGMilestonesTable::STARTING) + $offset);
                     $added = 1;
                 }
                 // Only do something if at least one call to addUpdate is done
                 if ($added == 1) {
                     $crit2->addWhere(TBGMilestonesTable::ID, $row->get(TBGMilestonesTable::ID));
                     $table->doUpdate($crit2);
                 }
             }
         }
         // PROJECTS
         $this->_fixNonUserDependentTimezone($offsets, TBGProjectsTable::getTable(), TBGProjectsTable::RELEASE_DATE, $scope, TBGProjectsTable::RELEASED);
         // VCS INTEGRATION
         // check if module is loaded
         $modules = TBGModulesTable::getTable()->getModulesForScope($scope->getID());
         if ($modules['vcs_integration'] == true) {
             TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'vcs_integration' . DS . 'classes' . DS . 'B2DB');
             TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'vcs_integration' . DS . 'classes');
             $this->_fixUserDependentTimezone($offsets, TBGVCSIntegrationTable::getTable(), TBGVCSIntegrationTable::AUTHOR, TBGVCSIntegrationTable::DATE, $scope);
         }
     }
 }