public static function loadFixtures(TBGScope $scope) { $scheme = new TBGIssuetypeScheme(); $scheme->setScope($scope->getID()); $scheme->setName("Default issuetype scheme"); $scheme->setDescription("This is the default issuetype scheme. It is used by all projects with no specific issuetype scheme selected. This scheme cannot be edited or removed."); $scheme->save(); TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_ISSUETYPESCHEME, $scheme->getID(), 'core', $scope->getID()); foreach (TBGIssuetype::getAll() as $issuetype) { $scheme->setIssuetypeEnabled($issuetype); if ($issuetype->getIcon() == 'developer_report') { $scheme->setIssuetypeRedirectedAfterReporting($issuetype, false); } if (in_array($issuetype->getIcon(), array('task', 'developer_report', 'idea'))) { $scheme->setIssuetypeReportable($issuetype, false); } } return $scheme; }
} ?> </td> </tr> <tr> <td><label for="issuetype_scheme"><?php echo __('Issuetype scheme'); ?> </label></td> <td> <?php if ($access_level == TBGSettings::ACCESS_FULL) { ?> <select name="issuetype_scheme" id="issuetype_scheme"> <?php foreach (TBGIssuetypeScheme::getAll() as $issuetype_scheme) { ?> <option value=<?php echo $issuetype_scheme->getID(); if ($project->getIssuetypeScheme()->getID() == $issuetype_scheme->getID()) { ?> selected<?php } ?> ><?php echo $issuetype_scheme->getName(); ?> </option> <?php } ?>
/** * Configure issue fields * * @param TBGRequest $request The request object */ public function runConfigureIssuetypes(TBGRequest $request) { $this->mode = $request->getParameter('mode', 'issuetypes'); if ($this->mode == 'issuetypes' || $this->mode == 'scheme') { $this->issue_types = TBGIssuetype::getAll(); $this->icons = TBGIssuetype::getIcons(); } elseif ($this->mode == 'schemes') { $this->issue_type_schemes = TBGIssuetypeScheme::getAll(); } if ($request->hasParameter('scheme_id')) { $this->scheme = TBGContext::factory()->TBGIssuetypeScheme((int) $request->getParameter('scheme_id')); if ($this->mode == 'copy_scheme') { if ($new_name = $request->getParameter('new_name')) { $new_scheme = new TBGIssuetypeScheme(); $new_scheme->setName($new_name); $new_scheme->save(); foreach ($this->scheme->getIssuetypes() as $issuetype) { $new_scheme->setIssuetypeEnabled($issuetype); $new_scheme->setIssuetypeRedirectedAfterReporting($issuetype, $this->scheme->isIssuetypeRedirectedAfterReporting($issuetype)); $new_scheme->setIssuetypeReportable($issuetype, $this->scheme->isIssuetypeReportable($issuetype)); } TBGIssueFieldsTable::getTable()->copyBySchemeIDs($this->scheme->getID(), $new_scheme->getID()); return $this->renderJSON(array('content' => $this->getTemplateHTML('configuration/issuetypescheme', array('scheme' => $new_scheme)))); } else { $this->error = TBGContext::getI18n()->__('Please enter a valid name'); } } elseif ($this->mode == 'delete_scheme') { $this->scheme->delete(); return $this->renderJSON(array('success' => true, 'message' => TBGContext::getI18n()->__('The issuetype scheme was deleted'))); } } }
/** * Create a new project and return it * * @param string $name * * @return TBGProject */ public function _preSave($is_new) { $project = self::getByKey($this->getKey()); // TBGProjectsTable::getTable()->getByKey($this->getKey()); if ($project instanceof TBGProject && $project->getID() != $this->getID()) { throw new InvalidArgumentException("A project with this key already exists"); } if ($is_new) { $this->setIssuetypeScheme(TBGIssuetypeScheme::getCoreScheme()); $this->setWorkflowScheme(TBGWorkflowScheme::getCoreScheme()); } }
public function updateByIssuetypeSchemeID($scheme_id) { $schemes = TBGIssuetypeScheme::getAll(); foreach ($schemes as $default_scheme_id => $scheme) { break; } $crit = $this->getCriteria(); $crit->addWhere(self::ISSUETYPE_SCHEME_ID, $scheme_id); $crit->addWhere(self::SCOPE, TBGContext::getScope()->getID()); $crit->addUpdate(self::ISSUETYPE_SCHEME_ID, $default_scheme_id); $res = $this->doUpdate($crit); }
public function loadFixtures() { // Load initial settings TBGSettingsTable::getTable()->loadFixtures($this); TBGSettings::loadSettings(); // Load group, users and permissions fixtures TBGGroup::loadFixtures($this); // Load initial teams TBGTeam::loadFixtures($this); // Set up user states, like "available", "away", etc TBGUserstate::loadFixtures($this); // Set up data types list($b_id, $f_id, $e_id, $t_id, $u_id, $i_id) = TBGIssuetype::loadFixtures($this); $scheme = TBGIssuetypeScheme::loadFixtures($this); TBGIssueFieldsTable::getTable()->loadFixtures($this, $scheme, $b_id, $f_id, $e_id, $t_id, $u_id, $i_id); TBGDatatype::loadFixtures($this); // Set up workflows TBGWorkflow::loadFixtures($this); TBGWorkflowSchemesTable::getTable()->loadFixtures($this); TBGWorkflowIssuetypeTable::getTable()->loadFixtures($this); // Set up left menu links TBGLinksTable::getTable()->loadFixtures($this); }
protected function _upgradeFrom3dot0() { // Add new tables TBGScopeHostnamesTable::getTable()->create(); // Add classpath for existing old tables used for upgrade TBGContext::addClasspath(THEBUGGENIE_MODULES_PATH . 'installation' . DS . 'classes' . DS . 'upgrade_3.0'); // Upgrade old tables TBGScopesTable::getTable()->upgrade(TBGScopesTable3dot0::getTable()); TBGIssueFieldsTable::getTable()->upgrade(TBGIssueFieldsTable3dot0::getTable()); // Upgrade all modules foreach (TBGContext::getModules() as $module) { if (method_exists($module, 'upgradeFrom3dot0')) { $module->upgradeFrom3dot0(); } } // Start a transaction to preserve the upgrade path $transaction = B2DB::startTransaction(); // Add votes to feature requests for default issue type scheme $its = new TBGIssuetypeScheme(1); foreach (TBGIssuetype::getAll() as $fr) { if ($fr instanceof TBGIssuetype) { if (in_array($fr->getKey(), array('featurerequest', 'bugreport', 'enhancement'))) { $its->setFieldAvailableForIssuetype($fr, 'votes'); } } } $ut = TBGUsersTable::getTable(); $crit = $ut->getCriteria(); $crit->addUpdate(TBGUsersTable::PRIVATE_EMAIL, true); $ut->doUpdate($crit); // Add default gravatar setting TBGSettings::saveSetting(TBGSettings::SETTING_ENABLE_GRAVATARS, 1); $trans_crit = TBGWorkflowTransitionsTable::getTable()->getCriteria(); $trans_crit->addWhere(TBGWorkflowTransitionsTable::NAME, 'Request more information'); $trans_crit->addWhere(TBGWorkflowTransitionsTable::WORKFLOW_ID, 1); $trans_row = TBGWorkflowTransitionsTable::getTable()->doSelectOne($trans_crit); if ($trans_row) { $transition = new TBGWorkflowTransition($trans_row->get(TBGWorkflowTransitionsTable::ID), $trans_row); $transition->setTemplate('main/updateissueproperties'); $transition->save(); } // End transaction and finalize upgrade $transaction->commitAndEnd(); $this->upgrade_complete = true; }
echo __('Type'); ?> </th> <th><?php echo __('Name'); ?> </th> <th><?php echo __('ID'); ?> </th> </tr> </thead> <tbody> <?php foreach (TBGIssuetypeScheme::getAll() as $item) { echo '<tr><td>' . __('Issue type scheme') . '</td><td>' . $item->getName() . '</td><td>' . $item->getID() . '</td></tr>'; } foreach (TBGWorkflowScheme::getAll() as $item) { echo '<tr><td>' . __('Workflow scheme') . '</td><td>' . $item->getName() . '</td><td>' . $item->getID() . '</td></tr>'; } foreach (TBGProject::getAll() as $item) { echo '<tr><td>' . __('Project') . '</td><td>' . $item->getName() . '</td><td>' . $item->getID() . '</td></tr>'; foreach (TBGMilestone::getAllByProjectID($item->getID()) as $item2) { echo '<tr><td>' . __('Milestone for project') . ' ' . $item->getID() . '</td><td>' . $item2->getName() . '</td><td>' . $item2->getID() . '</td></tr>'; } } foreach (TBGReproducability::getAll() as $item) { echo '<tr><td>' . __('Reproducability') . '</td><td>' . $item->getName() . '</td><td>' . $item->getID() . '</td></tr>'; } foreach (TBGSeverity::getAll() as $item) {
protected function _upgradeFrom3dot1() { // Add classpath for existing old tables used for upgrade TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'installation' . DS . 'classes' . DS . 'upgrade_3.1'); TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'mailing' . DS . 'classes' . DS . 'B2DB'); TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'mailing' . DS . 'classes'); TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'publish' . DS . 'classes' . DS . 'B2DB'); TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'publish' . DS . 'classes'); // Create new tables TBGDashboardViewsTable::getTable()->create(); TBGOpenIdAccountsTable::getTable()->create(); TBGProjectAssignedUsersTable::getTable()->create(); TBGProjectAssignedTeamsTable::getTable()->create(); TBGEditionAssignedUsersTable::getTable()->create(); TBGEditionAssignedTeamsTable::getTable()->create(); TBGComponentAssignedUsersTable::getTable()->create(); TBGComponentAssignedTeamsTable::getTable()->create(); TBGRolePermissionsTable::getTable()->create(); TBGUserScopesTable::getTable()->create(); // Upgrade existing tables TBGProjectsTable::getTable()->upgrade(TBGProjectsTable3dot1::getTable()); TBGUsersTable::getTable()->upgrade(TBGUsersTable3dot1::getTable()); TBGIssuesTable::getTable()->upgrade(TBGIssuesTable3dot1::getTable()); TBGIssueTypesTable::getTable()->upgrade(TBGIssueTypesTable3dot1::getTable()); TBGListTypesTable::getTable()->upgrade(TBGListTypesTable3dot1::getTable()); TBGEditionsTable::getTable()->upgrade(TBGEditionsTable3dot1::getTable()); TBGBuildsTable::getTable()->upgrade(TBGBuildsTable3dot1::getTable()); TBGCommentsTable::getTable()->upgrade(TBGCommentsTable3dot1::getTable()); TBGComponentsTable::getTable()->upgrade(TBGComponentsTable3dot1::getTable()); TBGCustomFieldsTable::getTable()->upgrade(TBGCustomFieldsTable3dot1::getTable()); TBGCustomFieldOptionsTable::getTable()->upgrade(TBGCustomFieldOptionsTable3dot1::getTable()); TBGIssueCustomFieldsTable::getTable()->upgrade(TBGIssueCustomFieldsTable3dot1::getTable()); // Create new module tables TBGIncomingEmailAccountTable::getTable()->create(); // Add new indexes TBGArticlesTable::getTable()->createIndexes(); TBGCommentsTable::getTable()->createIndexes(); TBGIssueAffectsBuildTable::getTable()->createIndexes(); TBGIssueAffectsComponentTable::getTable()->createIndexes(); TBGIssueAffectsEditionTable::getTable()->createIndexes(); TBGIssueFieldsTable::getTable()->createIndexes(); TBGIssueFilesTable::getTable()->createIndexes(); TBGIssuesTable::getTable()->createIndexes(); TBGIssuetypeSchemesTable::getTable()->createIndexes(); TBGPermissionsTable::getTable()->createIndexes(); TBGProjectsTable::getTable()->createIndexes(); TBGSettingsTable::getTable()->createIndexes(); TBGTeamMembersTable::getTable()->createIndexes(); TBGUserIssuesTable::getTable()->createIndexes(); TBGUsersTable::getTable()->createIndexes(); TBGUserScopesTable::getTable()->createIndexes(); if (TBGContext::getRequest()->getParameter('fix_my_timestamps', false)) { $this->_fixTimestamps(); } foreach (TBGScope::getAll() as $scope) { TBGRole::loadFixtures($scope); foreach (TBGDatatype::getTypes() as $type => $class) { TBGContext::setPermission('set_datatype_' . $type, 0, 'core', 0, 0, 0, true, $scope->getID()); } TBGContext::setPermission('page_confirm_scope_access', 0, 'core', 0, 0, 0, true, $scope->getID()); if (!TBGSettings::get(TBGSettings::SETTING_DEFAULT_WORKFLOW, 'core', $scope->getID())) { $workflow_id = TBGWorkflowsTable::getTable()->getFirstIdByScope($scope->getID()); if ($workflow_id) { TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_WORKFLOW, $workflow_id, 'core', $scope->getID()); } else { TBGWorkflow::loadFixtures($scope); } } if (!TBGSettings::get(TBGSettings::SETTING_DEFAULT_WORKFLOWSCHEME, 'core', $scope->getID())) { $workflow_scheme_id = TBGWorkflowSchemesTable::getTable()->getFirstIdByScope($scope->getID()); if ($workflow_scheme_id) { TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_WORKFLOWSCHEME, $workflow_scheme_id, 'core', $scope->getID()); } else { TBGWorkflowScheme::loadFixtures($scope); } } if (!TBGSettings::get(TBGSettings::SETTING_DEFAULT_ISSUETYPESCHEME, 'core', $scope->getID())) { $issuetype_scheme_id = TBGIssuetypeSchemesTable::getTable()->getFirstIdByScope($scope->getID()); if ($issuetype_scheme_id) { TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_ISSUETYPESCHEME, $issuetype_scheme_id, 'core', $scope->getID()); } else { TBGIssuetypeScheme::loadFixtures($scope); } } TBGSettings::saveSetting(TBGSettings::SETTING_FAVICON_ID, 0, 'core', $scope->getID()); TBGSettings::saveSetting(TBGSettings::SETTING_FAVICON_TYPE, 0, 'core', $scope->getID()); TBGSettings::saveSetting(TBGSettings::SETTING_HEADER_ICON_ID, 0, 'core', $scope->getID()); TBGSettings::saveSetting(TBGSettings::SETTING_HEADER_ICON_TYPE, 0, 'core', $scope->getID()); } $linkstable = TBGLinksTable::getTable(); $crit = $linkstable->getCriteria(); $crit->addUpdate(TBGLinksTable::URL, 'http://issues.thebuggenie.com'); $crit->addWhere(TBGLinksTable::URL, 'http://thebuggenie.com/thebuggenie'); $crit->addOr(TBGLinksTable::URL, 'http://www.thebuggenie.com/thebuggenie'); $linkstable->doUpdate($crit); $listtypestable = TBGListTypesTable::getTable(); $crit = $listtypestable->getCriteria(); $crit->addUpdate(TBGListTypesTable::ITEMTYPE, 'role'); $crit->addWhere(TBGListTypesTable::ITEMTYPE, 'projectrole'); $listtypestable->doUpdate($crit); $crit = $listtypestable->getCriteria(); $crit->addUpdate(TBGListTypesTable::ITEMTYPE, 'priority'); $crit->addWhere(TBGListTypesTable::ITEMTYPE, 'b2_prioritytypes'); $listtypestable->doUpdate($crit); TBGWorkflowTransitionsTable::getTable()->upgradeFrom3dot1(); TBGSettings::saveSetting(TBGSettings::SETTING_ICONSET, TBGSettings::get(TBGSettings::SETTING_THEME_NAME)); TBGContext::setPermission('readarticle', 0, 'publish', 0, 0, 0, true); foreach (TBGProject::getAll() as $project) { TBGDashboardViewsTable::getTable()->setDefaultViews($project->getID(), TBGDashboardViewsTable::TYPE_PROJECT); if (!$project->getKey()) { $project->setName($project->getName()); } } $this->upgrade_complete = true; }