public function deleteForum(Forum $forum) { $forum->delete(); Cache::flush(); return Redirect::to('dashboard/storyteller/manage/forums'); }
function run($request) { set_time_limit(0); // check to see if this has been run before. If it has then we will have already // have removed the parentID field $checkForMigration = DB::query("SHOW COLUMNS FROM \"Post\"")->column(); if (!in_array('ParentID', $checkForMigration)) { echo "Script has already ran. You can only run the migration script once.\n"; return false; } // go through all the posts with a parent ID = 0 and create the new thread objects $oldThreads = DB::query("SELECT * FROM \"Post\" WHERE \"ParentID\" = '0'"); if ($oldThreads) { $toCreateTotal = $oldThreads->numRecords(); echo "Creating " . $toCreateTotal . " new Forum Threads \n"; $holder = DataObject::get_one("ForumHolder"); if (!$holder) { return user_error('No Forum Holder Found', E_USER_ERROR); } $failbackForum = new Forum(); $failbackForum->Title = "Unimported Threads"; $failbackForum->ParentID = $holder->ID; $failbackForum->write(); $needsFailback = false; $totalThreadsSuccessfulCount = 0; $totalThreadsErroredCount = 0; while ($oldThread = $oldThreads->nextRecord()) { $hasError = false; $thread = new ForumThread(); if (isset($oldThread['Title'])) { $thread->Title = $oldThread['Title']; } else { $hasError = true; $thread->Title = "Question"; } $thread->NumViews = isset($oldThread['NumViews']) ? $oldThread['NumViews'] : 0; $thread->IsSticky = isset($oldThread['IsSticky']) ? $oldThread['IsSticky'] : false; $thread->IsReadOnly = isset($oldThread['IsReadOnly']) ? $oldThread['IsReadOnly'] : false; $thread->IsGlobalSticky = isset($oldThread['IsGlobalSticky']) ? $oldThread['IsGlobalSticky'] : false; if (isset($oldThread['ForumID'])) { $thread->ForumID = $oldThread['ForumID']; } else { $hasError = true; $needsFailback = true; $thread->ForumID = $failbackForum->ID; } $thread->write(); echo "Converted Thread: {$thread->ID} - {$thread->Title}. \n"; // update all the children DB::query("\n\t\t\t\t\tUPDATE \"Post\" \n\t\t\t\t\tSET \"ThreadID\" = '{$thread->ID}', \"ForumID\" = '{$thread->ForumID}'\n\t\t\t\t\tWHERE \"TopicID\" = '" . $oldThread['ID'] . "'\n\t\t\t\t"); if (!$hasError) { $totalThreadsSuccessfulCount++; } else { $totalThreadsErroredCount++; } } } echo "Converted {$totalThreadsSuccessfulCount} threads. Could not import {$totalThreadsErroredCount} threads.<br />"; if (!$needsFailback) { $failbackForum->delete(); } else { echo "Incorrectly imported threads are available to self moderate at <a href='" . $failbackForum->Link() . "'>here</a><br />"; } // transfer subscriptions // was a rename table but mysql had locking issues. $subscriptions = DB::query("SELECT * FROM \"Post_Subscription\""); $subCount = 0; if ($subscriptions) { while ($sub = $subscriptions->nextRecord()) { // don't import really odd data if (isset($sub['TopicID']) && isset($sub['MemberID'])) { $subCount++; $threadSub = new ForumThread_Subscription(); $threadSub->ThreadID = $sub['TopicID']; $threadSub->MemberID = $sub['MemberID']; $threadSub->write(); } } } echo "Transferred {$subCount} Thread Subscriptions<br />"; // Update the permissions on the forums. The Posters, Viewers have changed from a int field // to an actual modelled relationship $forums = DataObject::get('Forum'); if ($forums) { foreach ($forums as $forum) { $forum->ForumPostersGroupID = DB::query("SELECT \"ForumPostersGroup\" FROM \"Forum\" WHERE \"ID\" = '{$forum->ID}'")->value(); if ($viewingGroup = DB::query("SELECT \"ForumViewersGroup\" FROM \"Forum\" WHERE \"ID\" = '{$forum->ID}'")->value()) { $forum->ViewerGroups()->add(DataObject::get_by_id('Group', $viewingGroup)); } $forum->write(); } } // cleanup task. Delete old columns which are hanging round DB::dontRequireField('Post', 'ParentID'); DB::dontRequireField('Post', 'TopicID'); DB::dontRequireField('Post', 'Title'); DB::dontRequireField('Post', 'NumViews'); DB::dontRequireField('Post', 'IsSticky'); DB::dontRequireField('Post', 'IsReadOnly'); DB::dontRequireField('Post', 'IsGlobalSticky'); DB::dontRequireTable('Post_Subscription'); DB::dontRequireField('Forum', 'ForumViewersGroup'); DB::dontRequireField('Forum', 'ForumViewersGroupID'); DB::dontRequireField("Forum", 'ForumPostersGroup'); echo "Renamed old data columns in Post and removed Post_Subscription table <br />"; $this->attachLastPostIDs(); echo "Set ForumThread last post and update LastEdited to the most recent post <br />"; echo "Finished<br />"; }
function delete($sure, $really_sure, $really_really_sure) { if (!$sure || !$really_sure || !$really_really_sure) { $this->setMissingParamsError(); return false; } if ($this->getID() == $GLOBALS['sys_news_group'] || $this->getID() == 1 || $this->getID() == $GLOBALS['sys_stats_group'] || $this->getID() == $GLOBALS['sys_peer_rating_group']) { $this->setError(_('Cannot Delete System Group')); return false; } $perm =& $this->getPermission(session_get_user()); if (!$perm || !is_object($perm)) { $this->setPermissionDeniedError(); return false; } elseif ($perm->isError()) { $this->setPermissionDeniedError(); return false; } elseif (!$perm->isSuperUser()) { $this->setPermissionDeniedError(); return false; } db_begin(); // // Remove all the members // $members =& $this->getMembers(); for ($i = 0; $i < count($members); $i++) { $this->removeUser($members[$i]->getID()); } // // Delete Trackers // $atf = new ArtifactTypeFactory($this); $at_arr =& $atf->getArtifactTypes(); for ($i = 0; $i < count($at_arr); $i++) { if (!is_object($at_arr[$i])) { printf(_("Not Object: ArtifactType: %d"), $i); continue; } $at_arr[$i]->delete(1, 1); } // // Delete Forums // $ff = new ForumFactory($this); $f_arr =& $ff->getForums(); for ($i = 0; $i < count($f_arr); $i++) { if (!is_object($f_arr[$i])) { printf(_("Not Object: Forum: %d"), $i); continue; } $f_arr[$i]->delete(1, 1); //echo 'ForumFactory'.db_error(); } // // Delete Subprojects // $pgf = new ProjectGroupFactory($this); $pg_arr =& $pgf->getProjectGroups(); for ($i = 0; $i < count($pg_arr); $i++) { if (!is_object($pg_arr[$i])) { printf(_("Not Object: ProjectGroup: %d"), $i); continue; } $pg_arr[$i]->delete(1, 1); //echo 'ProjectGroupFactory'.db_error(); } // // Delete FRS Packages // //$frspf = new FRSPackageFactory($this); $res = db_query("SELECT * FROM frs_package WHERE group_id='" . $this->getID() . "'"); //echo 'frs_package'.db_error(); //$frsp_arr =& $frspf->getPackages(); while ($arr = db_fetch_array($res)) { //if (!is_object($pg_arr[$i])) { // echo "Not Object: ProjectGroup: ".$i; // continue; //} $frsp = new FRSPackage($this, $arr['package_id'], $arr); $frsp->delete(1, 1); } // // Delete news // $news_group =& group_get_object($GLOBALS['sys_news_group']); $res = db_query("SELECT forum_id FROM news_bytes WHERE group_id='" . $this->getID() . "'"); for ($i = 0; $i < db_numrows($res); $i++) { $Forum = new Forum($news_group, db_result($res, $i, 'forum_id')); if (!$Forum->delete(1, 1)) { printf(_("Could Not Delete News Forum: %d"), $Forum->getID()); } } $res = db_query("DELETE FROM news_bytes WHERE group_id='" . $this->getID() . "'"); // // Delete docs // $res = db_query("DELETE FROM doc_data WHERE group_id='" . $this->getID() . "'"); //echo 'doc_data'.db_error(); $res = db_query("DELETE FROM doc_groups WHERE group_id='" . $this->getID() . "'"); //echo 'doc_groups'.db_error(); // // Delete group history // $res = db_query("DELETE FROM group_history WHERE group_id='" . $this->getID() . "'"); //echo 'group_history'.db_error(); // // Delete group plugins // $res = db_query("DELETE FROM group_plugin WHERE group_id='" . $this->getID() . "'"); //echo 'group_plugin'.db_error(); // // Delete group cvs stats // $res = db_query("DELETE FROM stats_cvs_group WHERE group_id='" . $this->getID() . "'"); //echo 'stats_cvs_group'.db_error(); // // Delete Surveys // $sf = new SurveyFactory($this); $s_arr =& $sf->getSurveys(); for ($i = 0; $i < count($s_arr); $i++) { if (!is_object($s_arr[$i])) { printf(_("Not Object: Survey: %d"), $i); continue; } $s_arr[$i]->delete(); //echo 'SurveyFactory'.db_error(); } // // Delete SurveyQuestions // $sqf = new SurveyQuestionFactory($this); $sq_arr =& $sqf->getSurveyQuestions(); for ($i = 0; $i < count($sq_arr); $i++) { if (!is_object($sq_arr[$i])) { printf(_("Not Object: SurveyQuestion: %d"), $i); continue; } $sq_arr[$i]->delete(); //echo 'SurveyQuestionFactory'.db_error(); } // // Delete Mailing List Factory // $mlf = new MailingListFactory($this); $ml_arr =& $mlf->getMailingLists(); for ($i = 0; $i < count($ml_arr); $i++) { if (!is_object($ml_arr[$i])) { printf(_("Not Object: MailingList: %d"), $i); continue; } if (!$ml_arr[$i]->delete(1, 1)) { $this->setError(_('Could not properly delete the mailing list')); } //echo 'MailingListFactory'.db_error(); } // // Delete trove // $res = db_query("DELETE FROM trove_group_link WHERE group_id='" . $this->getID() . "'"); $res = db_query("DELETE FROM trove_agg WHERE group_id='" . $this->getID() . "'"); // // Delete counters // $res = db_query("DELETE FROM project_sums_agg WHERE group_id='" . $this->getID() . "'"); //echo 'project_sums_agg'.db_error(); $res = db_query("INSERT INTO deleted_groups (\n\t\tunix_group_name,delete_date,isdeleted) VALUES \n\t\t('" . $this->getUnixName() . "','" . time() . "','0')"); //echo 'InsertIntoDeleteQueue'.db_error(); $res = db_query("DELETE FROM groups WHERE group_id='" . $this->getID() . "'"); //echo 'DeleteGroup'.db_error(); db_commit(); if (!$res) { return false; } $hook_params = array(); $hook_params['group'] = $this; $hook_params['group_id'] = $this->getID(); plugin_hook("group_delete", $hook_params); if (isset($GLOBALS['sys_upload_dir']) && $this->getUnixName()) { exec('/bin/rm -rf ' . $GLOBALS['sys_upload_dir'] . '/' . $this->getUnixName() . '/'); } if (isset($GLOBALS['sys_ftp_upload_dir']) && $this->getUnixName()) { exec('/bin/rm -rf ' . $GLOBALS['sys_ftp_upload_dir'] . '/' . $this->getUnixName() . '/'); } // // Delete reporting // $res = db_query("DELETE FROM rep_group_act_weekly WHERE group_id='" . $this->getID() . "'"); //echo 'rep_group_act_weekly'.db_error(); $res = db_query("DELETE FROM rep_group_act_monthly WHERE group_id='" . $this->getID() . "'"); //echo 'rep_group_act_monthly'.db_error(); $res = db_query("DELETE FROM rep_group_act_daily WHERE group_id='" . $this->getID() . "'"); //echo 'rep_group_act_daily'.db_error(); unset($this->data_array); return true; }
public function admin_destroy_forum() { if (!isset($_POST['id'])) { error(__("Error"), __("No forum ID specified.", "discuss")); } if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()->secure_hashkey) { show_403(__("Access Denied"), __("Invalid security key.")); } $forum = new Forum($_POST['id']); if ($forum->no_results) { error(__("Error"), __("Invalid forum ID specified.", "discuss")); } if (!$forum->deletable()) { show_403(__("Access Denied"), __("You do not have sufficient privileges to delete this forum.", "discuss")); } foreach ($forum->topics as $topic) { $topic->update(null, null, $_POST['move_forum']); } Forum::delete($forum->id); Flash::notice(__("Forum deleted.", "discuss"), "/admin/?action=manage_forums"); }