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;
 }
Exemple #6
0
 /**
  * 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);
     }
 }
Exemple #8
0
 /**
  *
  *
  * @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;
 }