本文整理汇总了PHP中Gdn类的典型用法代码示例。如果您正苦于以下问题:PHP Gdn类的具体用法?PHP Gdn怎么用?PHP Gdn使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Gdn类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: ToString
public function ToString()
{
$HasPermission = Gdn::Session()->CheckPermission('Vanilla.Discussions.Add', TRUE, 'Category', 'any');
if ($HasPermission) {
echo Anchor(T('Ask a Question'), '/post/discussion?Type=Question', 'Button BigButton NewQuestion');
}
}
示例2: Edit
public function Edit($MessageID = '')
{
$this->AddJsFile('js/library/jquery.autogrow.js');
$this->AddJsFile('messages.js');
$this->Permission('Garden.Messages.Manage');
$this->AddSideMenu('garden/message');
// Generate some Controller & Asset data arrays
$this->LocationData = $this->_GetLocationData();
$this->AssetData = $this->_GetAssetData();
// Set the model on the form.
$this->Form->SetModel($this->MessageModel);
$this->Message = $this->MessageModel->GetID($MessageID);
// Make sure the form knows which item we are editing.
if (is_numeric($MessageID) && $MessageID > 0) {
$this->Form->AddHidden('MessageID', $MessageID);
}
// If seeing the form for the first time...
if ($this->Form->AuthenticatedPostBack() === FALSE) {
$this->Form->SetData($this->Message);
} else {
if ($MessageID = $this->Form->Save()) {
// Reset the message cache
$this->MessageModel->SetMessageCache();
// Redirect
$this->StatusMessage = Gdn::Translate('Your changes have been saved.');
$this->RedirectUrl = Url('garden/message');
}
}
$this->Render();
}
示例3: gdn_pluginManager_afterStart_handler
/**
* Register the debug database that captures the queries.
*
* This event happens as early as possible so that all queries can be captured.
*
* @param Gdn_PluginManager $sender The {@link Gdn_PluginManager} firing the event.
*/
public function gdn_pluginManager_afterStart_handler($sender)
{
$tmp = Gdn::factoryOverwrite(true);
Gdn::factoryInstall(Gdn::AliasDatabase, 'Gdn_DatabaseDebug', dirname(__FILE__) . DS . 'class.databasedebug.php', Gdn::FactorySingleton, array('Database'));
Gdn::factoryOverwrite($tmp);
unset($tmp);
}
示例4: isRemovable
/**
* Is the application/plugin/theme removable?
*
* @param string $Type self::TYPE_APPLICATION or self::TYPE_PLUGIN or self::TYPE_THEME
* @param string $Name
* @return boolean
*/
public static function isRemovable($Type, $Name)
{
switch ($Type) {
case self::TYPE_APPLICATION:
$ApplicationManager = Gdn::Factory('ApplicationManager');
if ($IsRemovable = !array_key_exists($Name, $ApplicationManager->EnabledApplications())) {
$ApplicationInfo = arrayValue($Name, $ApplicationManager->AvailableApplications(), array());
$ApplicationFolder = arrayValue('Folder', $ApplicationInfo, '');
$IsRemovable = IsWritable(PATH_APPLICATIONS . DS . $ApplicationFolder);
}
break;
case self::TYPE_PLUGIN:
if ($IsRemovable = !array_key_exists($Name, Gdn::pluginManager()->EnabledPlugins())) {
$PluginInfo = arrayValue($Name, Gdn::pluginManager()->AvailablePlugins(), false);
$PluginFolder = arrayValue('Folder', $PluginInfo, false);
$IsRemovable = IsWritable(PATH_PLUGINS . DS . $PluginFolder);
}
break;
case self::TYPE_THEME:
// TODO
$IsRemovable = false;
break;
}
return $IsRemovable;
}
示例5: Comment
public function Comment()
{
$Session = Gdn::Session();
$this->Form->SetModel($this->ActivityModel);
$NewActivityID = 0;
if ($this->Form->AuthenticatedPostBack()) {
$Body = $this->Form->GetValue('Body', '');
$ActivityID = $this->Form->GetValue('ActivityID', '');
if ($Body != '' && is_numeric($ActivityID) && $ActivityID > 0) {
$NewActivityID = $this->ActivityModel->Add($Session->UserID, 'ActivityComment', $Body, '', $ActivityID, '', TRUE);
}
}
// Redirect back to the sending location if this isn't an ajax request
if ($this->_DeliveryType === DELIVERY_TYPE_ALL) {
Redirect($this->Form->GetValue('Return', Gdn_Url::WebRoot()));
} else {
// Load the newly added comment
$this->Comment = $this->ActivityModel->GetID($NewActivityID);
$this->Comment->ActivityType .= ' Hidden';
// Hide it so jquery can reveal it
// Set it in the appropriate view
$this->View = 'comment';
// And render
$this->Render();
}
}
示例6: ToString
public function ToString()
{
if (Gdn::Config('Vanilla.Categories.Use') == TRUE) {
return parent::ToString();
}
return '';
}
示例7: smarty_function_searchbox
/**
* Writes the search box to the page.
*
* @param array The parameters passed into the function. This currently takes no parameters.
* @param $smarty The smarty object rendering the template.
* @return The url.
*/
function smarty_function_searchbox($params, &$smarty)
{
$placeholder = array_key_exists('placeholder', $params) ? val('placeholder', $params, '', true) : t('SearchBoxPlaceHolder', 'Search');
$form = Gdn::factory('Form');
$result = $form->open(array('action' => url('/search'), 'method' => 'get')) . $form->textBox('Search', array('placeholder' => $placeholder, 'accesskey' => '/')) . $form->button('Go', array('Name' => '')) . $form->close();
return $result;
}
示例8: pluginController_quoteMention_create
public function pluginController_quoteMention_create($sender, $discussionID, $commentID, $username)
{
$sender->deliveryMethod(DELIVERY_METHOD_JSON);
$user = Gdn::userModel()->getByUsername($username);
$discussionModel = new DiscussionModel();
$discussion = $discussionModel->getID($discussionID);
if (!$user || !$discussion) {
throw notFoundException();
}
// Make sure this endpoint can't be used to snoop around.
$sender->permission('Vanilla.Discussions.View', true, 'Category', $discussion->PermissionCategoryID);
// Find the previous comment of the mentioned user in this discussion.
$item = Gdn::sql()->getWhere('Comment', ['DiscussionID' => $discussion->DiscussionID, 'InsertUserID' => $user->UserID, 'CommentID <' => $commentID], 'CommentID', 'desc', 1)->firstRow();
// The items ID in the DOM used for highlighting.
if ($item) {
$target = '#Comment_' . $item->CommentID;
// The mentioned user might be the discussion creator.
} elseif ($discussion->InsertUserID == $user->UserID) {
$item = $discussion;
$target = '#Discussion_' . $item->DiscussionID;
}
if (!$item) {
// A success response code always means that a comment was found.
$sender->statusCode(404);
}
$sender->renderData($item ? ['html' => nl2br(sliceString(Gdn_Format::plainText($item->Body, $item->Format), c('QuoteMention.MaxLength', 400))), 'target' => $target] : []);
}
示例9: SetModuleSort
/**
* Function for quick modify sorting for modules in configuration file.
* See library/core/class.controller.php ~ L: 118
* If $PositionItem is False (default) $ModuleName will be added to the edn of the list.
* If $PositionItem is integer (positive or negative) ...
* If $PositionItem is string ...
*
* @param string $ModuleSortContainer, container name.
* @param string $AssetName, asset name.
* @param string $ModuleName, module name which need to add to config.
* @param mixed $PositionItem.
* @return bool. Return FALSE on failure.
*/
function SetModuleSort($ModuleSortContainer, $AssetName, $ModuleName, $PositionItem = False)
{
$ModuleSort = Gdn::Config('Modules');
$AssetSort = GetValueR("{$ModuleSortContainer}.{$AssetName}", $ModuleSort, array());
if (!is_array($AssetSort)) {
$AssetSort = array();
}
if ($PositionItem !== False) {
if (!is_numeric($PositionItem)) {
$Position = substr($PositionItem, 0, 1);
if (in_array($Position, array('-', '+'))) {
$PositionItem = substr($PositionItem, 1);
}
$PositionItem = array_search($PositionItem, $AssetSort);
if ($Position == '+') {
$PositionItem = (int) $PositionItem + 1;
}
}
$PositionItem = (int) $PositionItem;
array_splice($AssetSort, $PositionItem, 0, array($ModuleName));
} else {
array_push($AssetSort, $ModuleName);
}
$AssetSort = array_unique($AssetSort);
// Make sure that we put in config strings only.
$VarExport = create_function('$Value', 'return var_export(strval($Value), True);');
$ModuleList = implode(', ', array_map($VarExport, $AssetSort));
$PhpArrayCode = "\n\$Configuration['Modules']['{$ModuleSortContainer}']['{$AssetName}'] = array({$ModuleList});";
$ConfigFile = PATH_CONF . '/config.php';
$Result = file_put_contents($ConfigFile, $PhpArrayCode, FILE_APPEND | LOCK_EX);
return $Result !== False;
}
示例10: smarty_function_custom_menu
/**
* A placeholder for future menu items.
*
* @param array $Params The parameters passed into the function.
* @param Smarty $Smarty The smarty object rendering the template.
* @return string
*/
function smarty_function_custom_menu($Params, &$Smarty)
{
$Controller = $Smarty->Controller;
if (is_object($Menu = val('Menu', $Controller))) {
$Format = val('format', $Params, wrap('<a href="%url" class="%class">%text</a>', val('wrap', $Params, 'li')));
$Result = '';
foreach ($Menu->Items as $Group) {
foreach ($Group as $Item) {
// Make sure the item is a custom item.
if (valr('Attributes.Standard', $Item)) {
continue;
}
// Make sure the user has permission for the item.
if ($Permission = val('Permission', $Item)) {
if (!Gdn::session()->checkPermission($Permission)) {
continue;
}
}
if (($Url = val('Url', $Item)) && ($Text = val('Text', $Item))) {
$Attributes = val('Attributes', $Item);
$Result .= Gdn_Theme::link($Url, $Text, $Format, $Attributes) . "\r\n";
}
}
}
return $Result;
}
return '';
}
示例11: afterImport
/**
* Custom finalization.
*
* @throws Exception
*/
public function afterImport()
{
// Set up the routes to redirect from their older counterparts.
$Router = Gdn::router();
// Categories
$Router->SetRoute('forumdisplay\\.php\\?f=(\\d+)', 'categories/$1', 'Permanent');
$Router->SetRoute('archive\\.php/f-(\\d+)\\.html', 'categories/$1', 'Permanent');
// Discussions & Comments
$Router->SetRoute('showthread\\.php\\?t=(\\d+)', 'discussion/$1', 'Permanent');
//$Router->SetRoute('showthread\.php\?p=(\d+)', 'discussion/comment/$1#Comment_$1', 'Permanent');
//$Router->SetRoute('showpost\.php\?p=(\d+)', 'discussion/comment/$1#Comment_$1', 'Permanent');
$Router->SetRoute('archive\\.php/t-(\\d+)\\.html', 'discussion/$1', 'Permanent');
// Profiles
$Router->SetRoute('member\\.php\\?u=(\\d+)', 'profile/$1/x', 'Permanent');
$Router->SetRoute('usercp\\.php', 'profile', 'Permanent');
$Router->SetRoute('profile\\.php', 'profile', 'Permanent');
// Other
$Router->SetRoute('attachment\\.php\\?attachmentid=(\\d+)', 'discussion/download/$1', 'Permanent');
$Router->SetRoute('search\\.php', 'discussions', 'Permanent');
$Router->SetRoute('private\\.php', 'messages/all', 'Permanent');
$Router->SetRoute('subscription\\.php', 'discussions/bookmarked', 'Permanent');
// Make different sizes of avatars
$this->ProcessAvatars();
// Prep config for ProfileExtender plugin based on imported fields
$this->ProfileExtenderPrep();
// Set guests to System user to prevent security issues
$SystemUserID = Gdn::userModel()->GetSystemUserID();
$this->SQL->update('Discussion')->set('InsertUserID', $SystemUserID)->where('InsertUserID', 0)->put();
$this->SQL->update('Comment')->set('InsertUserID', $SystemUserID)->where('InsertUserID', 0)->put();
}
示例12: index
/**
* List all update checks.
*
* @param bool|false $Offset
* @param string $SortField
*/
public function index($Offset = false, $SortField = '')
{
$this->permission('Garden.Settings.Manage');
$this->addSideMenu('updates');
$this->addJsFile('jquery.gardenmorepager.js');
$this->title('Remote Updates');
$this->Form->Method = 'get';
$Limit = 30;
$SortField = $SortField == 'CountComments' ? 'c.CountComments' : 'c.DateInserted';
// Input Validation
$Offset = is_numeric($Offset) ? $Offset : 0;
// What the actual model in my controller, guy?
$this->UpdateData = Gdn::sql()->query("\n select s.Location, s.RemoteIp, c.DateInserted, c.CountUsers, c.CountDiscussions, c.CountComments\n from GDN_UpdateCheckSource s\n join (select SourceID, max(UpdateCheckID) as UpdateCheckID from GDN_UpdateCheck group by SourceID) mc\n on s.SourceID = mc.SourceID\n join GDN_UpdateCheck c\n on mc.UpdateCheckID = c.UpdateCheckID\n order by {$SortField} desc\n limit {$Offset}, {$Limit}");
$TotalRecords = Gdn::sql()->select('SourceID', 'count', 'CountSources')->from('UpdateCheckSource')->get()->firstRow()->CountSources;
// Build a pager
$PagerFactory = new Gdn_PagerFactory();
$this->Pager = $PagerFactory->getPager('MorePager', $this);
$this->Pager->MoreCode = 'More';
$this->Pager->LessCode = 'Previous';
$this->Pager->ClientID = 'Pager';
$this->Pager->Wrapper = '<tr %1$s><td colspan="6">%2$s</td></tr>';
$this->Pager->configure($Offset, $Limit, $TotalRecords, 'updates/index/%1$s/' . urlencode($SortField));
// Deliver json data if necessary
if ($this->_DeliveryType != DELIVERY_TYPE_ALL) {
$this->setJson('LessRow', $this->Pager->toString('less'));
$this->setJson('MoreRow', $this->Pager->toString('more'));
}
$this->render();
}
示例13: ToString
public function ToString()
{
$String = '';
ob_start();
?>
<div class="Box">
<h4><?php
echo Gdn::Translate('In this Discussion');
?>
</h4>
<ul class="PanelInfo">
<?php
foreach ($this->_UserData->Result() as $User) {
?>
<li>
<strong><?php
echo Anchor($User->Name, '/profile/' . urlencode($User->Name), 'UserLink');
?>
</strong>
<?php
echo Format::Date($User->DateLastActive);
?>
</li>
<?php
}
?>
</ul>
</div>
<?php
$String = ob_get_contents();
@ob_end_clean();
return $String;
}
示例14: Base_Render_Before
public function Base_Render_Before(&$Sender)
{
// Add menu items.
$Session = Gdn::Session();
if ($Sender->Menu) {
$Sender->Menu->AddLink('Dashboard', 'Dashboard', '/garden/settings', array('Garden.Settings.Manage'));
$Sender->Menu->AddLink('Dashboard', 'Users', '/user/browse', array('Garden.Users.Add', 'Garden.Users.Edit', 'Garden.Users.Delete'));
$Sender->Menu->AddLink('Activity', 'Activity', '/activity');
$Authenticator = Gdn::Authenticator();
if ($Session->IsValid()) {
$Sender->Menu->AddLink('SignOut', 'Sign Out', '/entry/leave/{Session_TransientKey}', FALSE, array('class' => 'NonTab'));
$Notifications = Gdn::Translate('Notifications');
$CountNotifications = $Session->User->CountNotifications;
if (is_numeric($CountNotifications) && $CountNotifications > 0) {
$Notifications .= '<span>' . $CountNotifications . '</span>';
}
$Sender->Menu->AddLink('User', '{Username}', '/profile/{Username}', array('Garden.SignIn.Allow'));
$Sender->Menu->AddLink('User', '\\' . $Notifications, 'profile/notifications/{Username}');
} else {
$Sender->Menu->AddLink('Entry', 'Sign In', $Authenticator->SignInUrl());
}
}
// Enable theme previewing
if ($Session->IsValid()) {
$PreviewTheme = $Session->GetPreference('PreviewTheme', '');
if ($PreviewTheme != '') {
$Sender->Theme = $PreviewTheme;
}
}
}
示例15: PluginController_SingleSignOn_Create
public function PluginController_SingleSignOn_Create($Sender, $EventArguments)
{
$Sender->Head->Title('Single Sign-on');
$Sender->AddSideMenu('garden/plugin/singlesignon');
$Validation = new Gdn_Validation();
$ConfigurationModel = new Gdn_ConfigurationModel($Validation);
$ConfigurationModel->SetField(array('Garden.Authenticator.Type', 'Garden.Authenticator.Encoding', 'Garden.Authenticator.AuthenticateUrl', 'Garden.Authenticator.SignInUrl', 'Garden.Authenticator.SignOutUrl', 'Garden.Authenticator.RegisterUrl', 'Garden.Cookie.Path'));
// Set the model on the form.
$Sender->Form = new Gdn_Form();
$Sender->Form->SetModel($ConfigurationModel);
// If seeing the form for the first time...
if ($Sender->Form->AuthenticatedPostBack() === FALSE) {
// Apply the config settings to the form.
$Sender->Form->SetData($ConfigurationModel->Data);
$Sender->Form->SetValue('EnableSSO', Gdn::Config('Garden.Authenticator.Type') == 'Handshake' ? 'TRUE' : '');
} else {
// Make sure to force some values
$Sender->Form->SetFormValue('Garden.Authenticator.Type', $Sender->Form->GetFormValue('EnableSSO', '') == 'TRUE' ? 'Handshake' : 'Password');
$Sender->Form->SetFormValue('Garden.Authenticator.Encoding', 'ini');
$Sender->Form->SetFormValue('Garden.Cookie.Path', '/');
// <-- Make sure that Vanilla's cookies don't have a path
if ($Sender->Form->Save() !== FALSE) {
$Sender->StatusMessage = Translate("Your changes have been saved successfully.");
}
}
$Sender->Render(PATH_PLUGINS . DS . 'SingleSignOn' . DS . 'views' . DS . 'index.php');
}