public function HtmlEntityDecode($Table, $Column) { $this->Permission('Garden.Settings.Manage'); // die($this->Request->RequestMethod()); if (strcasecmp($this->Request->RequestMethod(), Gdn_Request::INPUT_POST) == 0) { $Result = $this->Model->HtmlEntityDecode($Table, $Column); $this->SetData('Result', $Result); } $this->SetData('Title', "Decode Html Entities for {$Table}.{$Column}"); $this->_SetJob($this->Data('Title')); $this->AddSideMenu(); $this->Render('Job'); }
public function Counts($Column, $From = FALSE, $To = FALSE, $Max = FALSE) { $Result = array('Complete' => TRUE); switch ($Column) { case 'CountMessages': $this->Database->Query(DBAModel::GetCountSQL('count', 'Conversation', 'ConversationMessage', $Column, 'MessageID')); break; case 'CountParticipants': $this->SQL->Update('Conversation c')->Set('c.CountParticipants', '(select count(uc.ConversationID) from GDN_UserConversation uc where uc.ConversationID = c.ConversationID and uc.Deleted = 0)', FALSE, FALSE)->Put(); break; case 'FirstMessageID': $this->Database->Query(DBAModel::GetCountSQL('min', 'Conversation', 'ConversationMessage', $Column, 'MessageID')); break; case 'LastMessageID': $this->Database->Query(DBAModel::GetCountSQL('max', 'Conversation', 'ConversationMessage', $Column, 'MessageID')); break; case 'DateUpdated': $this->Database->Query(DBAModel::GetCountSQL('max', 'Conversation', 'ConversationMessage', $Column, 'DateInserted')); break; case 'UpdateUserID': $this->SQL->Update('Conversation c')->Join('ConversationMessage m', 'c.LastMessageID = m.MessageID')->Set('c.UpdateUserID', 'm.InsertUserID', FALSE, FALSE)->Put(); break; default: throw new Gdn_UserException("Unknown column {$Column}"); } return $Result; }
public function Counts($Column, $From = FALSE, $To = FALSE, $Max = FALSE) { $Result = array('Complete' => TRUE); switch ($Column) { case 'CountComments': $this->Database->Query(DBAModel::GetCountSQL('count', 'Discussion', 'Comment')); break; case 'FirstCommentID': $this->Database->Query(DBAModel::GetCountSQL('min', 'Discussion', 'Comment', $Column)); break; case 'LastCommentID': $this->Database->Query(DBAModel::GetCountSQL('max', 'Discussion', 'Comment', $Column)); break; case 'DateLastComment': $this->Database->Query(DBAModel::GetCountSQL('max', 'Discussion', 'Comment', $Column, 'DateInserted')); $this->SQL->Update('Discussion')->Set('DateLastComment', 'DateInserted', FALSE, FALSE)->Where('DateLastComment', NULL)->Put(); break; case 'LastCommentUserID': if (!$Max) { // Get the range for this update. $DBAModel = new DBAModel(); list($Min, $Max) = $DBAModel->PrimaryKeyRange('Discussion'); if (!$From) { $From = $Min; $To = $Min + DBAModel::$ChunkSize - 1; } } $this->SQL->Update('Discussion d')->Join('Comment c', 'c.CommentID = d.LastCommentID')->Set('d.LastCommentUserID', 'c.InsertUserID', FALSE, FALSE)->Where('d.DiscussionID >=', $From)->Where('d.DiscussionID <=', $To)->Put(); $Result['Complete'] = $To >= $Max; $Percent = round($To * 100 / $Max); if ($Percent > 100 || $Result['Complete']) { $Result['Percent'] = '100%'; } else { $Result['Percent'] = $Percent . '%'; } $From = $To + 1; $To = $From + DBAModel::$ChunkSize - 1; $Result['Args']['From'] = $From; $Result['Args']['To'] = $To; $Result['Args']['Max'] = $Max; break; default: throw new Gdn_UserException("Unknown column {$Column}"); } return $Result; }
/** * Look for users with an invalid role and apply the role specified to those users. */ public function fixUserRole() { $this->permission('Garden.Settings.Manage'); if ($this->Request->isAuthenticatedPostBack()) { if (validateRequired($this->Form->getFormValue('DefaultUserRole'))) { $this->Model->fixUserRole($this->Form->getFormValue('DefaultUserRole')); $this->setData('CompletedFix', true); } } $this->render(); }
public function Counts($Column) { $Result = array('Complete' => TRUE); switch ($Column) { case 'CountDiscussions': $this->Database->Query(DBAModel::GetCountSQL('count', 'Category', 'Discussion')); break; case 'CountComments': $this->Database->Query(DBAModel::GetCountSQL('sum', 'Category', 'Discussion', $Column, 'CountComments')); break; case 'LastDiscussionID': $this->Database->Query(DBAModel::GetCountSQL('max', 'Category', 'Discussion')); break; case 'LastCommentID': $Data = $this->SQL->Select('d.CategoryID')->Select('c.CommentID', 'max', 'LastCommentID')->Select('d.DiscussionID', 'max', 'LastDiscussionID')->Select('c.DateInserted', 'max', 'DateLastComment')->Select('d.DateInserted', 'max', 'DateLastDiscussion')->From('Comment c')->Join('Discussion d', 'd.DiscussionID = c.DiscussionID')->GroupBy('d.CategoryID')->Get()->ResultArray(); // Now we have to grab the discussions associated with these comments. $CommentIDs = ConsolidateArrayValuesByKey($Data, 'LastCommentID'); // Grab the discussions for the comments. $this->SQL->Select('c.CommentID, c.DiscussionID')->From('Comment c')->WhereIn('c.CommentID', $CommentIDs); $Discussions = $this->SQL->Get()->ResultArray(); $Discussions = Gdn_DataSet::Index($Discussions, array('CommentID')); foreach ($Data as $Row) { $CategoryID = (int) $Row['CategoryID']; $Category = CategoryModel::Categories($CategoryID); $CommentID = $Row['LastCommentID']; $DiscussionID = GetValueR("{$CommentID}.DiscussionID", $Discussions, NULL); $DateLastComment = Gdn_Format::ToTimestamp($Row['DateLastComment']); $DateLastDiscussion = Gdn_Format::ToTimestamp($Row['DateLastDiscussion']); $Set = array('LastCommentID' => $CommentID); if ($DiscussionID) { $LastDiscussionID = GetValue('LastDiscussionID', $Category); if ($DateLastComment >= $DateLastDiscussion) { // The most recent discussion is from this comment. $Set['LastDiscussionID'] = $DiscussionID; } else { // The most recent discussion has no comments. $Set['LastCommentID'] = NULL; } } else { // Something went wrong. $Set['LastCommentID'] = NULL; $Set['LastDiscussionID'] = NULL; } $this->SetField($CategoryID, $Set); } break; case 'LastDateInserted': $Categories = $this->SQL->Select('ca.CategoryID')->Select('d.DateInserted', '', 'DateLastDiscussion')->Select('c.DateInserted', '', 'DateLastComment')->From('Category ca')->Join('Discussion d', 'd.DiscussionID = ca.LastDiscussionID')->Join('Comment c', 'c.CommentID = ca.LastCommentID')->Get()->ResultArray(); foreach ($Categories as $Category) { $DateLastDiscussion = GetValue('DateLastDiscussion', $Category); $DateLastComment = GetValue('DateLastComment', $Category); $MaxDate = $DateLastComment; if (is_null($DateLastComment) || $DateLastDiscussion > $MaxDate) { $MaxDate = $DateLastDiscussion; } if (is_null($MaxDate)) { continue; } $CategoryID = (int) $Category['CategoryID']; $this->SetField($CategoryID, 'LastDateInserted', $MaxDate); } break; } self::ClearCache(); return $Result; }
/** * User counts. * * @param string $Column The name of the count column. (ex. CountDiscussions, CountComments). * @param int|null $UserID The user ID to get the counts for or **null** for the current user. */ public function counts($Column, $UserID = null) { if ($UserID > 0) { $Where = ['UserID' => $UserID]; } else { $Where = null; } switch (strtolower($Column)) { case 'countdiscussions': Gdn::database()->query(DBAModel::getCountSQL('count', 'User', 'Discussion', 'CountDiscussions', 'DiscussionID', 'UserID', 'InsertUserID', $Where)); break; case 'countcomments': Gdn::database()->query(DBAModel::getCountSQL('count', 'User', 'Comment', 'CountComments', 'CommentID', 'UserID', 'InsertUserID', $Where)); break; } if ($UserID > 0) { $this->clearCache($UserID); } }
public function Counts($Column, $UserID = null) { if ($UserID) { $Where = array('UserID' => $UserID); } else { $Where = NULL; } switch (strtolower($Column)) { case 'countdiscussions': Gdn::Database()->Query(DBAModel::GetCountSQL('count', 'User', 'Discussion', 'CountDiscussions', 'DiscussionID', 'UserID', 'InsertUserID', $Where)); break; case 'countcomments': Gdn::Database()->Query(DBAModel::GetCountSQL('count', 'User', 'Comment', 'CountComments', 'CommentID', 'UserID', 'InsertUserID', $Where)); break; } if ($UserID) { $this->ClearCache($UserID); } }
/** * * * @param $Column * @param null $UserID * @return array * @throws Gdn_UserException */ public function counts($Column, $UserID = null) { // Delete all the orphaned tagdiscussion records $Px = $this->Database->DatabasePrefix; $Sql = "delete td.* from {$Px}TagDiscussion as td left join {$Px}Discussion as d ON td.DiscussionID = d.DiscussionID where d.DiscussionID is null"; $this->Database->query($Sql); $Result = array('Complete' => true); switch ($Column) { case 'CountDiscussions': Gdn::database()->query(DBAModel::getCountSQL('count', 'Tag', 'TagDiscussion', 'CountDiscussions', 'DiscussionID', 'TagID', 'TagID')); break; default: throw new Gdn_UserException("Unknown column {$Column}"); } return $Result; }
/** * Used by the DBA controller to update the denormalized badge count on the * user table via dba/counts * @param string $Column * @param int $UserID * @return boolean * @throws Gdn_UserException */ public function Counts($Column, $UserID = NULL) { if ($UserID) { $Where = array('UserID' => $UserID); } else { $Where = NULL; } $Result = array('Complete' => TRUE); switch ($Column) { case 'CountBadges': Gdn::Database()->Query(DBAModel::GetCountSQL('count', 'User', 'BadgeAward', 'CountBadges', 'BadgeAwardID', 'UserID', 'UserID', $Where)); break; default: throw new Gdn_UserException("Unknown column {$Column}"); } return $Result; }