/** * Additional data to update after a save call (such as denormalized values in other tables). * * @param boolean Do the query? */ function post_save_each($doquery = true) { ($hook = vBulletinHook::fetch_hook('socgroupcatdata_postsave')) ? eval($hook) : false; fetch_socialgroup_category_cloud(true); return true; }
/** * Any code to run after deleting * * @param Boolean Do the query? */ function post_delete($doquery = true) { if (!defined('MYSQL_VERSION')) { $mysqlversion = $this->registry->db->query_first("SELECT version() AS version"); define('MYSQL_VERSION', $mysqlversion['version']); } $enginetype = version_compare(MYSQL_VERSION, '4.0.18', '<') ? 'TYPE' : 'ENGINE'; $tabletype = version_compare(MYSQL_VERSION, '4.1', '<') ? 'HEAP' : 'MEMORY'; $aggtable = 'aaggregate_temp_' . $this->registry->userinfo['userid'] . '_' . $this->fetch_field('groupid') . '_' . TIMENOW; $this->registry->db->query_write("\n\t\t\tCREATE TABLE IF NOT EXISTS " . TABLE_PREFIX . "{$aggtable} (\n\t\t\t\tuserid INT UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\tPRIMARY KEY (userid)\n\t\t\t) {$enginetype} = {$tabletype}\n\t\t"); if ($this->registry->options['usemailqueue'] == 2) { $this->registry->db->lock_tables(array($aggtable => 'WRITE', 'socialgroupmember' => 'WRITE')); } $this->registry->db->query_write("\n\t\t\tINSERT IGNORE INTO " . TABLE_PREFIX . "{$aggtable}\n\t\t\tSELECT userid\n\t\t\tFROM " . TABLE_PREFIX . "socialgroupmember\n\t\t\tWHERE groupid = " . $this->fetch_field('groupid') . "\n\t\t\t\tAND type = 'invited'\n\t\t"); // A user's 'type' doesn't seem to change when a group's type is changed. Why is this? // e.g. a 'moderated' user doesn't become a member if a moderated group is made public $result = array(); if ($this->fetch_field('creatoruserid')) { $result = $this->registry->db->query_first("\n\t\t\t\tSELECT COUNT(*) AS count\n\t\t\t\tFROM " . TABLE_PREFIX . "socialgroupmember\n\t\t\t\tWHERE groupid = " . $this->fetch_field('groupid') . "\n\t\t\t\t\tAND type = 'moderated'\n\t\t\t"); } if ($this->registry->options['usemailqueue'] == 2) { $this->registry->db->unlock_tables(); } $this->registry->db->query_write("DELETE FROM " . TABLE_PREFIX . "socialgroupmember WHERE groupid = " . $this->fetch_field('groupid')); $this->registry->db->query_write("UPDATE " . TABLE_PREFIX . "user AS user," . TABLE_PREFIX . "{$aggtable} AS aggregate\n\t\t\tSET socgroupinvitecount = IF(socgroupinvitecount > 0, socgroupinvitecount - 1, 0)\n\t\t\tWHERE user.userid = aggregate.userid\n\t\t"); if ($result['count']) { $this->registry->db->query_write("\n\t\t\t\tUPDATE " . TABLE_PREFIX . "user\n\t\t\t\tSET socgroupreqcount = IF(socgroupreqcount >= {$result['count']}, socgroupreqcount - {$result['count']}, 0)\n\t\t\t\tWHERE userid = " . $this->fetch_field('creatoruserid') . "\n\t\t\t"); } $this->registry->db->query_write("DROP TABLE IF EXISTS " . TABLE_PREFIX . $aggtable); // delete picture references $this->registry->db->query_write("\n\t\t\tDELETE FROM " . TABLE_PREFIX . "socialgrouppicture\n\t\t\tWHERE groupid = " . intval($this->fetch_field('groupid')) . "\n\t\t"); $gms_to_delete = array(); $gmids = $this->registry->db->query_read("SELECT gmid FROM " . TABLE_PREFIX . "discussion AS discussion\n\t\t\t INNER JOIN " . TABLE_PREFIX . "groupmessage AS gm\n\t\t\t ON (gm.discussionid = discussion.discussionid)\n\t\t\t WHERE discussion.groupid = " . intval($this->fetch_field('groupid'))); while ($gmid = $this->registry->db->fetch_array($gmids)) { $gms_to_delete[] = $gmid['gmid']; } $this->registry->db->free_result($gmids); if (!empty($gms_to_delete)) { $this->registry->db->query_write("\n\t\t\t\tDELETE FROM " . TABLE_PREFIX . "moderation\n\t\t\t\tWHERE type = 'groupmessage'\n\t\t\t\t\tAND primaryid IN (" . implode(', ', $gms_to_delete) . ")\n\t\t\t"); $this->registry->db->query_write("\n\t\t\t\tDELETE FROM " . TABLE_PREFIX . "deletionlog\n\t\t\t\tWHERE type = 'groupmessage'\n\t\t\t\t\tAND primaryid IN (" . implode(', ', $gms_to_delete) . ")\n\t\t\t"); $this->registry->db->query_write("DELETE " . TABLE_PREFIX . "groupmessage\n\t\t\t\t\t\t\t\t\t\t\tFROM " . TABLE_PREFIX . "groupmessage\n\t\t\t\t\t\t\t\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "discussion\n\t\t\t\t\t\t\t\t\t\t\t ON (" . TABLE_PREFIX . "discussion.discussionid = " . TABLE_PREFIX . "groupmessage.discussionid)\n\t\t\t\t\t\t\t\t\t\t\tWHERE " . TABLE_PREFIX . "discussion.groupid = " . $this->fetch_field('groupid')); } // delete subscribed discussions $this->registry->db->query_write("\n\t\t\tDELETE " . TABLE_PREFIX . "subscribediscussion\n\t\t\tFROM " . TABLE_PREFIX . "subscribediscussion\n\t\t\tINNER JOIN " . TABLE_PREFIX . "discussion\n\t\t\t ON (" . TABLE_PREFIX . "discussion.discussionid = " . TABLE_PREFIX . "subscribediscussion.discussionid)\n\t\t\t AND " . TABLE_PREFIX . "discussion.groupid = " . intval($this->fetch_field('groupid')) . "\n\t\t"); // delete discussion readmarking $this->registry->db->query_write("\n\t\t\tDELETE " . TABLE_PREFIX . "discussionread\n\t\t\tFROM " . TABLE_PREFIX . "discussionread\n\t\t\tINNER JOIN " . TABLE_PREFIX . "discussion\n\t\t\t ON (" . TABLE_PREFIX . "discussion.discussionid = " . TABLE_PREFIX . "discussionread.discussionid)\n\t\t\t AND " . TABLE_PREFIX . "discussion.groupid = " . intval($this->fetch_field('groupid')) . "\n\t\t"); // delete discussions $this->registry->db->query_write("\n\t\t\tDELETE FROM " . TABLE_PREFIX . "discussion\n\t\t\tWHERE groupid = " . intval($this->fetch_field('groupid'))); // delete group subscriptions $this->registry->db->query_write("\n\t\t\tDELETE FROM " . TABLE_PREFIX . "subscribegroup\n\t\t\tWHERE " . TABLE_PREFIX . "subscribegroup.groupid = " . intval($this->fetch_field('groupid')) . "\n\t\t"); // delete readmarking $this->registry->db->query_write("\n\t\t\tDELETE FROM " . TABLE_PREFIX . "groupread\n\t\t\tWHERE " . TABLE_PREFIX . "groupread.groupid = " . intval($this->fetch_field('groupid')) . "\n\t\t"); // delete group icon $groupicon =& datamanager_init('SocialGroupIcon', $this->registry, ERRTYPE_STANDARD); $groupicon->condition = "groupid = " . intval($this->fetch_field('groupid')); $groupicon->delete(); unset($groupicon); // update moderation count for owner update_owner_pending_gm_count($this->fetch_field('creatoruserid')); // update category cloud fetch_socialgroup_category_cloud(true); // update newest groups fetch_socialgroup_newest_groups(true, false, !$this->registry->options['sg_enablesocialgroupicons']); ($hook = vBulletinHook::fetch_hook('socgroupdata_delete')) ? eval($hook) : false; }
$navbits['group.php' . $vbulletin->session->vars['sessionurl_q']] = $vbphrase['social_groups']; if (!$navphrase) { $navphrase = empty($filters) ? $vbphrase['all_groups'] : $vbphrase['search_results']; } $navbits[''] = $navphrase; } } // ####################################################################### if ($_REQUEST['do'] == 'overview') { $show['sgicons'] = $vbulletin->options['sg_enablesocialgroupicons']; ($hook = vBulletinHook::fetch_hook('group_prepareinfo')) ? eval($hook) : false; $vbulletin->input->clean_array_gpc('r', array('owngrouppage' => TYPE_UINT)); $show['messageinfo'] = $vbulletin->options['socnet_groups_msg_enabled'] ? true : false; $show['pictureinfo'] = ($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_albums'] and $vbulletin->options['socnet_groups_albums_enabled']); // Get categories $categories = fetch_socialgroup_category_cloud(); $categorybits = ''; foreach ($categories as $category) { eval('$categorybits .= "' . fetch_template('socialgroups_category_cloud_bit') . '";'); } // Fetch a random group if ($randomgroup = fetch_socialgroup_random_group()) { $randomgroup = prepare_socialgroup($randomgroup); } // Get newest groups $newgroups = fetch_socialgroup_newest_groups(false, false, !$vbulletin->options['sg_enablesocialgroupicons']); $newgroupbits = ''; foreach ($newgroups as $group) { $group = prepare_socialgroup($group); ($hook = vBulletinHook::fetch_hook('group_newgroup_bit')) ? eval($hook) : false; eval('$newgroupbits .= "' . fetch_template('socialgroups_newgroup_' . ($vbulletin->options['sg_enablesocialgroupicons'] ? '' : 'listview_') . 'bit') . '";');