protected function _initialize() { parent::_setup(self::B2DBNAME, self::ID); parent::_addForeignKeyColumn(self::UID, \thebuggenie\core\entities\tables\Users::getTable(), \thebuggenie\core\entities\tables\Users::ID); parent::_addForeignKeyColumn(self::ARTICLE_ID, Articles::getTable(), Articles::ID); parent::_addForeignKeyColumn(self::FILE_ID, \thebuggenie\core\entities\tables\Files::getTable(), \thebuggenie\core\entities\tables\Files::ID); parent::_addInteger(self::ATTACHED_AT, 10); }
public function do_execute() { if (\thebuggenie\core\framework\Context::isInstallmode()) { $this->cliEcho("The Bug Genie is not installed\n", 'red'); } else { $this->cliEcho("Finding files to remove\n", 'white', 'bold'); $files = Files::getTable()->getUnattachedFiles(); $this->cliEcho("Found " . count($files) . " files\n", 'white'); foreach ($files as $file_id) { $file = Files::getTable()->selectById($file_id); $this->cliEcho('Deleting file ' . $file_id . "\n"); $file->delete(); } $this->cliEcho("All " . count($files) . " files removed successfully!\n\n", 'white', 'bold'); } }
public function getByIssueID($issue_id) { $crit = $this->getCriteria(); $crit->addWhere(self::ISSUE_ID, $issue_id); $crit->addJoin(Files::getTable(), Files::ID, self::FILE_ID); $res = $this->doSelect($crit, false); $ret_arr = array(); if ($res) { while ($row = $res->getNextRow()) { $file = new \thebuggenie\core\entities\File($row->get(Files::ID), $row); $file->setUploadedAt($row->get(self::ATTACHED_AT)); $ret_arr[$row->get(Files::ID)] = $file; } } return $ret_arr; }
protected function _upgradeFrom4dot1dot4(framework\Request $request) { set_time_limit(0); \thebuggenie\core\entities\tables\Files::getTable()->upgrade(\thebuggenie\core\modules\installation\upgrade_414\File::getB2DBTable()); $this->upgrade_complete = true; $this->current_version = '4.1.5'; }
public function getCurrentUploadUsage() { if ($this->_used_storage === null) { $this->_used_storage = Files::getTable()->getSizeByScopeID($this->getID()); } return $this->_used_storage; }
protected function moveIssues($project_id, $to_scope_id) { $crit = Issues::getTable()->getCriteria(); $crit->addWhere('issues.project_id', $project_id); $crit->addSelectionColumn('issues.id', 'id'); $issue_ids = []; if ($res = Issues::getTable()->doSelect($crit)) { while ($row = $res->getNextRow()) { $issue_ids[] = $row['id']; } } $this->cliEcho("------------------\n"); $this->cliEcho('Moving '); $this->cliEcho(count($issue_ids), 'white', 'bold'); $this->cliEcho(" issues\n"); $this->cliEcho("------------------\n"); if (!$issue_ids) { return; } $this->cliEcho("Moving comments... "); $comments_crit = Comments::getTable()->getCriteria(); $comments_crit->addUpdate('comments.scope', $to_scope_id); $comments_crit->addWhere('comments.target_id', $issue_ids, Criteria::DB_IN); $comments_crit->addWhere('comments.target_type', Comment::TYPE_ISSUE); Comments::getTable()->doUpdate($comments_crit); $this->cliEcho(" done\n"); $this->cliEcho("Moving log items... "); $logs_crit = Log::getTable()->getCriteria(); $logs_crit->addUpdate('log.scope', $to_scope_id); $logs_crit->addWhere('log.target', $issue_ids, Criteria::DB_IN); $logs_crit->addWhere('log.target_type', Log::TYPE_ISSUE); Log::getTable()->doUpdate($logs_crit); $this->cliEcho(" done\n"); $this->cliEcho("Moving attachments... "); $file_ids_crit = IssueFiles::getTable()->getCriteria(); $file_ids_crit->addWhere('issuefiles.issue_id', $issue_ids, Criteria::DB_IN); $file_ids_crit->addSelectionColumn('issuefiles.file_id', 'file_id'); $file_ids_crit->addSelectionColumn('issuefiles.id', 'id'); $file_ids = []; $issue_file_ids = []; if ($res = IssueFiles::getTable()->doSelect($file_ids_crit)) { while ($row = $res->getNextRow()) { $file_ids[] = $row['file_id']; $issue_file_ids[] = $row['id']; } } if (count($file_ids)) { $file_crit = Files::getTable()->getCriteria(); $file_crit->addUpdate('files.scope', $to_scope_id); $file_crit->addWhere('files.id', $file_ids, Criteria::DB_IN); Files::getTable()->doUpdate($file_crit); $issue_file_crit = IssueFiles::getTable()->getCriteria(); $issue_file_crit->addUpdate('issuefiles.scope', $to_scope_id); $issue_file_crit->addWhere('issuefiles.id', $issue_file_ids, Criteria::DB_IN); IssueFiles::getTable()->doUpdate($issue_file_crit); } $this->cliEcho(" done\n"); $this->cliEcho("Moving calculations and estimations... "); $estimates_crit = IssueEstimates::getTable()->getCriteria(); $estimates_crit->addUpdate('issue_estimates.scope', $to_scope_id); $estimates_crit->addWhere('issue_estimates.issue_id', $issue_ids, Criteria::DB_IN); IssueEstimates::getTable()->doUpdate($estimates_crit); $spent_crit = IssueSpentTimes::getTable()->getCriteria(); $spent_crit->addUpdate('issue_spenttimes.scope', $to_scope_id); $spent_crit->addWhere('issue_spenttimes.issue_id', $issue_ids, Criteria::DB_IN); IssueSpentTimes::getTable()->doUpdate($spent_crit); $this->cliEcho(" done\n"); $this->cliEcho("Moving links, related and affected items"); $tables = ['\\thebuggenie\\core\\entities\\tables\\IssueAffectsBuild' => 'issueaffectsbuild', '\\thebuggenie\\core\\entities\\tables\\IssueAffectsComponent' => 'issueaffectscomponent', '\\thebuggenie\\core\\entities\\tables\\IssueAffectsEdition' => 'issueaffectsedition']; foreach ($tables as $class_name => $table_name) { $crit = $class_name::getTable()->getCriteria(); $crit->addUpdate($table_name . '.scope', $to_scope_id); $crit->addWhere($table_name . '.issue', $issue_ids, Criteria::DB_IN); $class_name::getTable()->doUpdate($crit); } $links_crit = Links::getTable()->getCriteria(); $links_crit->addUpdate('links.scope', $to_scope_id); $links_crit->addWhere('links.target_id', $issue_ids, Criteria::DB_IN); $links_crit->addWhere('links.target_type', 'issue'); Links::getTable()->doUpdate($links_crit); $related_crit = IssueRelations::getTable()->getCriteria(); $related_crit->addUpdate('issuerelations.scope', $to_scope_id); $ctn = $related_crit->returnCriterion('issuerelations.child_id', $issue_ids, Criteria::DB_IN); $ctn->addOr('issuerelations.parent_id', $issue_ids, Criteria::DB_IN); $related_crit->addWhere($ctn); $votes_crit = Votes::getTable()->getCriteria(); $votes_crit->addUpdate('votes.scope', $to_scope_id); $votes_crit->addWhere('votes.target', $issue_ids, Criteria::DB_IN); Votes::getTable()->doUpdate($votes_crit); $this->cliEcho(" done\n"); $this->cliEcho("Updating user issue bookmarks"); $user_issues_crit = UserIssues::getTable()->getCriteria(); $user_issues_crit->addUpdate('userissues.scope', $to_scope_id); $user_issues_crit->addWhere('userissues.issue', $issue_ids, Criteria::DB_IN); UserIssues::getTable()->doUpdate($user_issues_crit); $this->cliEcho(" done\n"); $this->updateCustomFields($issue_ids, $to_scope_id); $crit = Issues::getTable()->getCriteria(); $crit->addUpdate('issues.scope', $to_scope_id); $crit->addWhere('issues.id', $issue_ids, Criteria::DB_IN); Issues::getTable()->doUpdate($crit); $this->cliEcho("------------------\n"); $this->cliEcho("Done moving issues\n"); $this->cliEcho("------------------\n"); }