$db->query_write("\r\n\t\tDELETE FROM " . TABLE_PREFIX . "pt_projectversion\r\n\t\tWHERE projectversiongroupid = {$projectversiongroup['projectversiongroupid']}\r\n\t"); if ($group_versions) { // updated applies version $db->query_write("\r\n\t\t\tUPDATE " . TABLE_PREFIX . "pt_issue SET\r\n\t\t\t\tappliesversionid = " . $vbulletin->GPC['appliesversionid'] . "\r\n\t\t\tWHERE appliesversionid IN (" . implode(',', $group_versions) . ")\r\n\t\t"); // update addressed version if ($vbulletin->GPC['addressedversionid'] == -1) { $db->query_write("\r\n\t\t\t\tUPDATE " . TABLE_PREFIX . "pt_issue SET\r\n\t\t\t\t\taddressedversionid = 0,\r\n\t\t\t\t\tisaddressed = 1\r\n\t\t\t\tWHERE addressedversionid IN (" . implode(',', $group_versions) . ")\r\n\t\t\t"); } else { if ($vbulletin->GPC['addressedversionid'] == 0) { $db->query_write("\r\n\t\t\t\tUPDATE " . TABLE_PREFIX . "pt_issue SET\r\n\t\t\t\t\taddressedversionid = 0,\r\n\t\t\t\t\tisaddressed = 0\r\n\t\t\t\tWHERE addressedversionid IN (" . implode(',', $group_versions) . ")\r\n\t\t\t"); } else { $db->query_write("\r\n\t\t\t\tUPDATE " . TABLE_PREFIX . "pt_issue SET\r\n\t\t\t\t\taddressedversionid = " . $vbulletin->GPC['addressedversionid'] . ",\r\n\t\t\t\t\tisaddressed = 1\r\n\t\t\t\tWHERE addressedversionid IN (" . implode(',', $group_versions) . ")\r\n\t\t\t"); } } } build_version_cache(); define('CP_REDIRECT', 'project.php?do=projectversion&projectid=' . $project['projectid']); print_stop_message('project_version_deleted'); } // ######################################################################## if ($_REQUEST['do'] == 'projectversiongroupdelete') { $vbulletin->input->clean_array_gpc('r', array('projectversiongroupid' => TYPE_UINT)); $projectversiongroup = $db->query_first("\r\n\t\tSELECT *\r\n\t\tFROM " . TABLE_PREFIX . "pt_projectversiongroup\r\n\t\tWHERE projectversiongroupid = " . $vbulletin->GPC['projectversiongroupid']); $project = fetch_project_info($projectversiongroup['projectid'], false); if (!$project) { print_stop_message('invalid_action_specified'); } $version_groups = array(); $version_query = $db->query_read("\r\n\t\tSELECT projectversion.projectversionid, projectversion.versionname, projectversiongroup.groupname\r\n\t\tFROM " . TABLE_PREFIX . "pt_projectversion AS projectversion\r\n\t\tINNER JOIN " . TABLE_PREFIX . "pt_projectversiongroup AS projectversiongroup ON\r\n\t\t\t(projectversion.projectversiongroupid = projectversiongroup.projectversiongroupid)\r\n\t\tWHERE projectversion.projectid = {$project['projectid']}\r\n\t\t\tAND projectversiongroup.projectversiongroupid <> " . $vbulletin->GPC['projectversiongroupid'] . "\r\n\t\tORDER BY projectversion.effectiveorder DESC\r\n\t"); while ($version = $db->fetch_array($version_query)) { $version_groups["{$version['groupname']}"]["{$version['projectversionid']}"] = $version['versionname'];
/** * Additional data to update after a delete call (such as denormalized values in other tables). * * @param boolean Do the query? */ function post_delete($doquery = true) { $projectid = intval($this->fetch_field('projectid')); $db =& $this->registry->db; // project related data $db->query_write("\r\n\t\t\tDELETE FROM " . TABLE_PREFIX . "pt_projecttype\r\n\t\t\tWHERE projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE FROM " . TABLE_PREFIX . "pt_projecttypeprivatelastpost\r\n\t\t\tWHERE projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE FROM " . TABLE_PREFIX . "pt_projectpermission\r\n\t\t\tWHERE projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE FROM " . TABLE_PREFIX . "pt_projectversion\r\n\t\t\tWHERE projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE FROM " . TABLE_PREFIX . "pt_projectversiongroup\r\n\t\t\tWHERE projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE FROM " . TABLE_PREFIX . "pt_projectcategory\r\n\t\t\tWHERE projectid = {$projectid}\r\n\t\t"); // MySQL 4 needs to use the non-aliased tables in multi-table deletes (#23024) $mysqlversion = $db->query_first("SELECT version() AS version"); $include_prefix = version_compare($mysqlversion['version'], '4.1.0', '<'); // clear out all the issue data $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issueassign\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issueassign AS issueassign\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issueassign.issueid)\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issueattach\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issueattach AS issueattach\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issueattach.issueid)\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issuechange\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issuechange AS issuechange\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issuechange.issueid)\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issuesubscribe\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issuesubscribe AS issuesubscribe\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issuesubscribe.issueid)\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issuetag\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issuetag AS issuetag\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issuetag.issueid)\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issuevote\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issuevote AS issuevote\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issuevote.issueid)\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issuedeletionlog\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issuedeletionlog AS issuedeletionlog\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issuedeletionlog.primaryid AND issuedeletionlog.type = 'issue')\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issuenote\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issuenote AS issuenote\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issuenote.issueid)\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE " . ($include_prefix ? TABLE_PREFIX . 'pt_' : '') . "issueprivatelastpost\r\n\t\t\tFROM " . TABLE_PREFIX . "pt_issueprivatelastpost AS issueprivatelastpost\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "pt_issue AS issue ON (issue.issueid = issueprivatelastpost.issueid)\r\n\t\t\tWHERE issue.projectid = {$projectid}\r\n\t\t"); $db->query_write("\r\n\t\t\tDELETE FROM " . TABLE_PREFIX . "pt_issue\r\n\t\t\tWHERE projectid = {$projectid}\r\n\t\t"); require_once DIR . '/includes/adminfunctions_projecttools.php'; build_project_cache(); build_version_cache(); build_assignable_users(); // builds bitfields and perms as well build_pt_user_list('pt_report_users', 'pt_report_user_cache'); $this->update_project_forum_setting(false); ($hook = vBulletinHook::fetch_hook('pt_projectdata_delete')) ? eval($hook) : false; return true; }