Esempio n. 1
0
/**
* Deletes PT-related user data. Used in the userdata_delete hook.
*
* @param	vB_DataManager_User	User DM
*/
function process_pt_user_delete(&$dataman)
{
    global $vbulletin, $db;
    // deleting a user, so update the issues and notes appropriately
    $db->query_write("\r\n\t\tUPDATE " . TABLE_PREFIX . "pt_issue SET\r\n\t\t\tsubmitusername = '******'username']) . "',\r\n\t\t\tsubmituserid = 0\r\n\t\tWHERE submituserid = " . $dataman->existing['userid'] . "\r\n\t");
    $db->query_write("\r\n\t\tUPDATE " . TABLE_PREFIX . "pt_issuenote SET\r\n\t\t\tusername = '******'username']) . "',\r\n\t\t\tuserid = 0\r\n\t\tWHERE userid = " . $dataman->existing['userid'] . "\r\n\t");
    $db->query_write("\r\n\t\tUPDATE " . TABLE_PREFIX . "pt_issue SET\r\n\t\t\tlastpostuserid = 0\r\n\t\tWHERE lastpostuserid = " . $dataman->existing['userid'] . "\r\n\t");
    $db->query_write("\r\n\t\tDELETE FROM " . TABLE_PREFIX . "pt_issueassign\r\n\t\tWHERE userid = " . $dataman->existing['userid']);
    $db->query_write("\r\n\t\tUPDATE " . TABLE_PREFIX . "pt_issueprivatelastpost SET\r\n\t\t\tlastpostuserid = 0\r\n\t\tWHERE lastpostuserid = " . $dataman->existing['userid'] . "\r\n\t");
    $db->query_write("\r\n\t\tDELETE FROM " . TABLE_PREFIX . "pt_issueread\r\n\t\tWHERE userid = " . $dataman->existing['userid']);
    $db->query_write("\r\n\t\tDELETE FROM " . TABLE_PREFIX . "pt_issuereport\r\n\t\tWHERE userid = " . $dataman->existing['userid'] . "\r\n\t\t\tAND public = 1\r\n\t");
    $db->query_write("\r\n\t\tDELETE FROM " . TABLE_PREFIX . "pt_issuereportsubscribe\r\n\t\tWHERE userid = " . $dataman->existing['userid']);
    $db->query_write("\r\n\t\tDELETE FROM " . TABLE_PREFIX . "pt_issuesubscribe\r\n\t\tWHERE userid = " . $dataman->existing['userid']);
    $db->query_write("\r\n\t\tDELETE FROM " . TABLE_PREFIX . "pt_projectread\r\n\t\tWHERE userid = " . $dataman->existing['userid']);
    $db->query_write("\r\n\t\tDELETE FROM " . TABLE_PREFIX . "pt_projecttypesubscribe\r\n\t\tWHERE userid = " . $dataman->existing['userid']);
    require_once DIR . '/includes/adminfunctions_projecttools.php';
    build_assignable_users();
    build_pt_user_list('pt_report_users', 'pt_report_user_cache');
}
Esempio n. 2
0
 /**
  * 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;
 }
Esempio n. 3
0
    }
    if (!$vbulletin->GPC['projectid']) {
        // updating usergroup-level permissions
        $newpermval = 0;
        foreach ($vbulletin->GPC['ugpermissions'] as $bitval => $yesno) {
            if ($yesno) {
                $newpermval += $bitval;
            }
        }
        $db->query_write("\n\t\t\tUPDATE " . TABLE_PREFIX . "usergroup SET\n\t\t\t\tptpermissions = {$newpermval}\n\t\t\tWHERE usergroupid = " . $vbulletin->GPC['usergroupid']);
        require_once DIR . '/includes/functions_databuild.php';
        build_forum_permissions();
    }
    //build_project_permissions();
    build_assignable_users();
    build_pt_user_list('pt_report_users', 'pt_report_user_cache');
    define('CP_REDIRECT', 'projectpermission.php?do=list' . ($vbulletin->GPC['projectid'] ? '&amp;projectid=' . $vbulletin->GPC['projectid'] : ''));
    print_stop_message('project_permissions_saved');
}
// ########################################################################
if ($_REQUEST['do'] == 'edit') {
    $vbulletin->input->clean_array_gpc('r', array('usergroupid' => TYPE_UINT, 'projectid' => TYPE_UINT));
    $default_perms = array();
    $perm_fields = $db->query_read("\n\t\tSHOW COLUMNS FROM " . TABLE_PREFIX . "pt_projectpermission\n\t\tLIKE '%permissions'\n\t");
    while ($perm_field = $db->fetch_array($perm_fields)) {
        $default_perms[str_replace('permissions', '', $perm_field['Field'])] = 0;
    }
    $global_permissions = array();
    foreach (array_keys($issuetype_options) as $typeid) {
        $global_permissions["{$typeid}"] = $default_perms;
    }
/**
* Builds the cache of assignable users into $vbulletin->pt_assignable.
* Accessed as [projectid][issuetypeid][userid] => username.
*
* @return	array	Assignable users cache
*/
function build_assignable_users()
{
    return build_pt_user_list('pt_assignable', 'pt_assignable_user_cache');
}