instance() public static method

The shared instance of this object.
public static instance ( ) : CategoryModel
return CategoryModel Returns the instance.
Ejemplo n.º 1
0
 /**
  * The shared instance of this object.
  *
  * @return CategoryModel Returns the instance.
  */
 public static function instance()
 {
     if (self::$instance === null) {
         self::$instance = new CategoryModel();
     }
     return self::$instance;
 }
Ejemplo n.º 2
0
 /**
  * Check whether all condition are met for this plugin to do its magic.
  *
  * @param Gdn_Request $request
  * @param int|bool $categoryID Category ID of the welcome category if it exists and this function return true
  * @return bool
  */
 protected function isWelcomePostActive($request, &$categoryID)
 {
     static $cachedCategoryID = null;
     if ($cachedCategoryID === null) {
         $isWelcomePost = true;
         if ($request->get('welcomepost', false) !== "true") {
             $cachedCategoryID = false;
             return false;
         }
         if (!Gdn::session()->isValid()) {
             $cachedCategoryID = false;
             return false;
         }
         $category = (array) CategoryModel::instance()->getByCode('welcome');
         $cachedCategoryID = val('CategoryID', $category, false);
         if (!$cachedCategoryID) {
             return false;
         }
         $categoryID = $cachedCategoryID;
     } else {
         $isWelcomePost = (bool) $cachedCategoryID;
         $categoryID = $cachedCategoryID;
     }
     return $isWelcomePost;
 }
Ejemplo n.º 3
0
if ($SQL->getWhere('Category', array('CategoryID' => -1))->numRows() == 0) {
    $SQL->insert('Category', ['CategoryID' => -1, 'TreeLeft' => 1, 'TreeRight' => 4, 'InsertUserID' => 1, 'UpdateUserID' => 1, 'DateInserted' => Gdn_Format::toDateTime(), 'DateUpdated' => Gdn_Format::toDateTime(), 'Name' => 'Root', 'UrlCode' => '', 'Description' => 'Root of category tree. Users should never see this.', 'PermissionCategoryID' => -1, 'DisplayAs' => 'Categories']);
    $RootCategoryInserted = true;
}
if ($Drop || !$CategoryExists) {
    $SQL->insert('Category', array('ParentCategoryID' => -1, 'TreeLeft' => 2, 'TreeRight' => 3, 'Depth' => 1, 'InsertUserID' => 1, 'UpdateUserID' => 1, 'DateInserted' => Gdn_Format::toDateTime(), 'DateUpdated' => Gdn_Format::toDateTime(), 'Name' => 'General', 'UrlCode' => 'general', 'Description' => 'General discussions', 'PermissionCategoryID' => -1));
} elseif ($CategoryExists && !$PermissionCategoryIDExists) {
    if (!c('Garden.Permissions.Disabled.Category')) {
        // Existing installations need to be set up with per/category permissions.
        $SQL->update('Category')->set('PermissionCategoryID', 'CategoryID', false)->put();
        $SQL->update('Permission')->set('JunctionColumn', 'PermissionCategoryID')->where('JunctionColumn', 'CategoryID')->put();
    }
}
if ($CategoryExists) {
    CategoryModel::instance()->rebuildTree();
    CategoryModel::instance()->recalculateTree();
    unset($CategoryModel);
}
// Construct the discussion table.
$Construct->table('Discussion');
$DiscussionExists = $Construct->TableExists();
$FirstCommentIDExists = $Construct->columnExists('FirstCommentID');
$BodyExists = $Construct->columnExists('Body');
$LastCommentIDExists = $Construct->columnExists('LastCommentID');
$LastCommentUserIDExists = $Construct->columnExists('LastCommentUserID');
$CountBookmarksExists = $Construct->columnExists('CountBookmarks');
$Construct->PrimaryKey('DiscussionID')->column('Type', 'varchar(10)', true, 'index')->column('ForeignID', 'varchar(32)', true, 'index')->column('CategoryID', 'int', false, array('index.CategoryPages', 'index.CategoryInserted'))->column('InsertUserID', 'int', false, 'key')->column('UpdateUserID', 'int', true)->column('FirstCommentID', 'int', true)->column('LastCommentID', 'int', true)->column('Name', 'varchar(100)', false, 'fulltext')->column('Body', 'text', false, 'fulltext')->column('Format', 'varchar(20)', true)->column('Tags', 'text', null)->column('CountComments', 'int', '0')->column('CountBookmarks', 'int', null)->column('CountViews', 'int', '1')->column('Closed', 'tinyint(1)', '0')->column('Announce', 'tinyint(1)', '0')->column('Sink', 'tinyint(1)', '0')->column('DateInserted', 'datetime', false, array('index', 'index.CategoryInserted'))->column('DateUpdated', 'datetime', true)->column('InsertIPAddress', 'ipaddress', true)->column('UpdateIPAddress', 'ipaddress', true)->column('DateLastComment', 'datetime', null, array('index', 'index.CategoryPages'))->column('LastCommentUserID', 'int', true)->column('Score', 'float', null)->column('Attributes', 'text', true)->column('RegardingID', 'int(11)', true, 'index');
//->column('Source', 'varchar(20)', true)
if (c('Vanilla.QueueNotifications')) {
    $Construct->column('Notified', 'tinyint', ActivityModel::SENT_ARCHIVE);
}
Ejemplo n.º 4
0
 /**
  *
  *
  * @param $Filename
  * @param $Get
  * @return bool|string
  */
 public function filenameRedirect($Filename, $Get)
 {
     trace(['Filename' => $Filename, 'Get' => $Get], 'Testing');
     $Filename = strtolower($Filename);
     array_change_key_case($Get);
     if (!isset(self::$Files[$Filename])) {
         return false;
     }
     $Row = self::$Files[$Filename];
     if (is_callable($Row)) {
         // Use a callback to determine the translation.
         $Row = call_user_func_array($Row, [&$Get]);
     }
     trace($Get, 'New Get');
     // Translate all of the get parameters into new parameters.
     $Vars = array();
     foreach ($Get as $Key => $Value) {
         if (!isset($Row[$Key])) {
             continue;
         }
         $Opts = (array) $Row[$Key];
         if (isset($Opts['Filter'])) {
             // Call the filter function to change the value.
             $R = call_user_func($Opts['Filter'], $Value, $Opts[0]);
             if (is_array($R)) {
                 if (isset($R[0])) {
                     // The filter can change the column name too.
                     $Opts[0] = $R[0];
                     $Value = $R[1];
                 } else {
                     // The filter can return return other variables too.
                     $Vars = array_merge($Vars, $R);
                     $Value = null;
                 }
             } else {
                 $Value = $R;
             }
         }
         if ($Value !== null) {
             $Vars[$Opts[0]] = $Value;
         }
     }
     trace($Vars, 'Translated Arguments');
     // Now let's see what kind of record we have.
     // We'll check the various primary keys in order of importance.
     $Result = false;
     if (isset($Vars['CommentID'])) {
         trace("Looking up comment {$Vars['CommentID']}.");
         $CommentModel = new CommentModel();
         // If a legacy slug is provided (assigned during a merge), attempt to lookup the comment using it
         if (isset($Get['legacy']) && Gdn::Structure()->Table('Comment')->ColumnExists('ForeignID')) {
             $Comment = $CommentModel->GetWhere(['ForeignID' => $Get['legacy'] . '-' . $Vars['CommentID']])->FirstRow();
         } else {
             $Comment = $CommentModel->GetID($Vars['CommentID']);
         }
         if ($Comment) {
             $Result = CommentUrl($Comment, '//');
         }
     } elseif (isset($Vars['DiscussionID'])) {
         trace("Looking up discussion {$Vars['DiscussionID']}.");
         $DiscussionModel = new DiscussionModel();
         $DiscussionID = $Vars['DiscussionID'];
         $Discussion = false;
         if (is_numeric($DiscussionID)) {
             // If a legacy slug is provided (assigned during a merge), attempt to lookup the discussion using it
             if (isset($Get['legacy']) && Gdn::Structure()->Table('Discussion')->ColumnExists('ForeignID')) {
                 $Discussion = $DiscussionModel->GetWhere(['ForeignID' => $Get['legacy'] . '-' . $DiscussionID])->FirstRow();
             } else {
                 $Discussion = $DiscussionModel->GetID($Vars['DiscussionID']);
             }
         } else {
             // This is a slug style discussion ID. Let's see if there is a UrlCode column in the discussion table.
             $DiscussionModel->DefineSchema();
             if ($DiscussionModel->Schema->FieldExists('Discussion', 'UrlCode')) {
                 $Discussion = $DiscussionModel->GetWhere(['UrlCode' => $DiscussionID])->FirstRow();
             }
         }
         if ($Discussion) {
             $Result = DiscussionUrl($Discussion, self::pageNumber($Vars, 'Vanilla.Comments.PerPage'), '//');
         }
     } elseif (isset($Vars['UserID'])) {
         trace("Looking up user {$Vars['UserID']}.");
         $User = Gdn::UserModel()->GetID($Vars['UserID']);
         if ($User) {
             $Result = Url(UserUrl($User), '//');
         }
     } elseif (isset($Vars['TagID'])) {
         $Tag = TagModel::instance()->GetID($Vars['TagID']);
         if ($Tag) {
             $Result = TagUrl($Tag, self::pageNumber($Vars, 'Vanilla.Discussions.PerPage'), '//');
         }
     } elseif (isset($Vars['CategoryID'])) {
         trace("Looking up category {$Vars['CategoryID']}.");
         // If a legacy slug is provided (assigned during a merge), attempt to lookup the category ID based on it
         if (isset($Get['legacy']) && Gdn::Structure()->Table('Category')->ColumnExists('ForeignID')) {
             $CategoryModel = new CategoryModel();
             $Category = $CategoryModel->GetWhere(['ForeignID' => $Get['legacy'] . '-' . $Vars['CategoryID']])->FirstRow();
         } else {
             $Category = CategoryModel::Categories($Vars['CategoryID']);
         }
         if ($Category) {
             $Result = categoryUrl($Category, self::pageNumber($Vars, 'Vanilla.Discussions.PerPage'), '//');
         }
     } elseif (isset($Vars['CategoryCode'])) {
         trace("Looking up category {$Vars['CategoryCode']}.");
         $category = CategoryModel::instance()->getByCode($Vars['CategoryCode']);
         if ($category) {
             $pageNumber = self::pageNumber($Vars, 'Vanilla.Discussions.PerPage');
             if ($pageNumber > 1) {
                 $pageParam = '?Page=' . $pageNumber;
             } else {
                 $pageParam = null;
             }
             $Result = categoryUrl($category, '', '//') . $pageParam;
         }
     }
     return $Result;
 }
Ejemplo n.º 5
0
 public function tree($category = '')
 {
     $tree = CategoryModel::instance()->getChildTree($category);
     $this->setData('Categories', $tree);
     $this->render('blank', 'utility', 'dashboard');
 }