本文整理汇总了PHP中cache_permissions函数的典型用法代码示例。如果您正苦于以下问题:PHP cache_permissions函数的具体用法?PHP cache_permissions怎么用?PHP cache_permissions使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cache_permissions函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: process
public function process()
{
if (!$this->content['blogtextid'] or !vB::$vbulletin->products['vbblog']) {
return true;
}
if (vB::$vbulletin->userinfo['userid']) {
$fields = ", ignored.relationid AS b_ignoreid, buddy.relationid AS b_buddyid";
$joins = "\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "userlist AS ignored ON (ignored.userid = user.userid AND ignored.relationid = " . vB::$vbulletin->userinfo['userid'] . " AND ignored.type = 'ignore')\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "userlist AS buddy ON (buddy.userid = user.userid AND buddy.relationid = " . vB::$vbulletin->userinfo['userid'] . " AND buddy.type = 'buddy')\n\t\t\t";
}
$catsql = $this->fetchCategoryPermissions();
$comments = vB::$db->query_read_slave("\n\t\t\tSELECT\n\t\t\t\tIF (bu.title <> '', bu.title, user.username) AS b_blog_title, bt.pagetext AS bt_pagetext, blog.postedby_userid, bt.username AS bt_username,\n\t\t\t\tbt.blogid AS bt_blogid, bt.blogtextid AS bt_blogtextid, bt.title AS bt_title, bt.state AS bt_state, bt.userid AS bt_userid, fp.pagetext AS b_pagetext,\n\t\t\t\tblog.blogid AS b_blogid, blog.title AS b_title, blog.userid AS b_userid, blog.state AS b_state, blog.options AS b_options, blog.views AS b_views, blog.comments_visible AS b_comments_visible,\n\t\t\t\tbu.options_member AS b_options_member, bu.options_guest AS b_options_guest, bu.options_buddy AS b_options_buddy, options_ignore AS b_options_ignore, bu.memberids AS b_memberids, bu.memberblogids AS b_memberblogids,\n\t\t\t\tuser.username AS b_username, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS b_displaygroupid, user.infractiongroupid AS b_infractiongroupid, user.usergroupid AS b_usergroupid, user.membergroupids AS b_membergroupids\n\t\t\t\t{$fields}\n\t\t\tFROM " . TABLE_PREFIX . "blog_text AS bt\n\t\t\tINNER JOIN " . TABLE_PREFIX . "blog AS blog ON (blog.blogid = bt.blogid)\n\t\t\tINNER JOIN " . TABLE_PREFIX . "blog_user AS bu ON (bu.bloguserid = blog.userid)\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = blog.userid)\n\t\t\tINNER JOIN " . TABLE_PREFIX . "blog_text AS fp ON (fp.blogtextid = blog.firstblogtextid)\n\t\t\t{$joins}\n\t\t\t{$catsql['joinsql']}\n\t\t\tWHERE\n\t\t\t\tbt.blogtextid IN (" . implode(",", array_keys($this->content['blogtextid'])) . ")\n\t\t\t\t\tAND\n\t\t\t\tblog.pending = 0\n\t\t\t\t{$catsql['wheresql']}\n\t\t");
while ($comment = vB::$db->fetch_array($comments)) {
$this->content['blogtext'][$comment['blogtextid']] = $comment;
unset($this->content['blogid'][$comment['bt_blogid']]);
$this->content['blogtext'][$comment['bt_blogtextid']] = $this->parse_array($comment, 'bt_');
$this->content['userid'][$comment['bt_userid']] = 1;
if (!$this->content['blog'][$comment['b_blogid']]) {
$this->content['blog'][$comment['b_blogid']] = $this->parse_array($comment, 'b_');
cache_permissions($this->content['blog'][$comment['b_blogid']], false);
$this->content['userid'][$comment['b_userid']] = 1;
$this->content['userid'][$comment['postedby_userid']] = 1;
}
}
$this->content['blogtextid'] = array();
}
示例2: construct_category
private function construct_category($userinfo, $type = 'global')
{
global $vbulletin;
require_once DIR . '/includes/blog_functions_category.php';
if (!$userinfo['permissions']) {
cache_permissions($userinfo, false);
}
if (!isset($vbulletin->vbblog['categorycache']["{$userinfo['userid']}"])) {
fetch_ordered_categories($userinfo['userid']);
}
if (empty($vbulletin->vbblog['categorycache']["{$userinfo['userid']}"])) {
return;
}
if ($userinfo['userid'] != $vbulletin->userinfo['userid']) {
$cantusecats = array_unique(array_merge($userinfo['blogcategorypermissions']['cantpost'], $vbulletin->userinfo['blogcategorypermissions']['cantpost'], $userinfo['blogcategorypermissions']['cantview'], $vbulletin->userinfo['blogcategorypermissions']['cantview']));
} else {
$cantusecats = array_unique(array_merge($userinfo['blogcategorypermissions']['cantpost'], $userinfo['blogcategorypermissions']['cantview']));
}
$result = array();
foreach ($vbulletin->vbblog['categorycache']["{$userinfo['userid']}"] as $blogcategoryid => $category) {
if (!($userinfo['permissions']['vbblog_general_permissions'] & $vbulletin->bf_ugp_vbblog_general_permissions['blog_cancreatecategory']) and $category['userid']) {
continue;
} else {
if (in_array($blogcategoryid, $cantusecats)) {
continue;
} else {
if ($type == 'global' and $category['userid'] != 0 or $type == 'local' and $category['userid'] == 0) {
continue;
}
}
}
$result[] = array('blogcategoryid' => $category['blogcategoryid'], 'category' => array('title' => $category['title']));
}
return $result;
}
示例3: RegisterService
function RegisterService($who)
{
global $db, $vbulletin, $server;
$result = array();
if (!$vbulletin->options['vbb_serviceonoff']) {
$result['Code'] = 1;
$result['Text'] = 'vbb_service_turned_off';
} else {
if ($vbulletin->options['vbb_servicepw'] != $_SERVER['PHP_AUTH_PW']) {
$result['Code'] = 1;
$result['Text'] = 'vbb_invalid_servicepw';
} else {
$userid = fetch_userid_by_service($who['ServiceName'], $who['Username']);
if (empty($userid) || $userid <= 0) {
$result['Code'] = 1;
$result['Text'] = 'invalid_user';
} else {
unset($vbulletin->userinfo);
$vbulletin->userinfo =& fetch_userinfo($userid);
$permissions = cache_permissions($vbulletin->userinfo);
$vbulletin->options['hourdiff'] = (date('Z', TIMENOW) / 3600 - $vbulletin->userinfo['timezoneoffset']) * 3600;
fetch_options_overrides($vbulletin->userinfo);
fetch_time_data();
// everything is ok
$result['Code'] = 0;
}
}
}
return $result;
}
示例4: fetchCanViewAlbum
protected function fetchCanViewAlbum($albumid)
{
if (!$this->fetchCanViewAlbums() or !($album = $this->content['album'][$albumid])) {
return false;
}
if (!($userinfo = $this->content['user'][$album['userid']])) {
return false;
}
cache_permissions($userinfo, false);
if (!can_moderate(0, 'caneditalbumpicture') and !($userinfo['permissions']['albumpermissions'] & vB::$vbulletin->bf_ugp_albumpermissions['canalbum'])) {
return false;
}
if (!can_view_profile_section($album['userid'], 'albums')) {
// private album that we can not see
return false;
}
require_once DIR . '/includes/functions_album.php';
if ($album['state'] == 'private' and !can_view_private_albums($album['userid'], $album['buddy'])) {
// private album that we can not see
return false;
} else {
if ($album['state'] == 'profile' and !can_view_profile_albums($album['userid'])) {
// profile album that we can not see
return false;
}
}
return true;
}
示例5: process_showgroups_userinfo
function process_showgroups_userinfo($user)
{
global $vbulletin, $permissions, $stylevar, $show;
$user = array_merge($user, convert_bits_to_array($user['options'], $vbulletin->bf_misc_useroptions));
$user = array_merge($user, convert_bits_to_array($user['adminoptions'], $vbulletin->bf_misc_adminoptions));
cache_permissions($user, false);
fetch_online_status($user, true);
if (!$user['invisible'] or $permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehidden']) {
$user['lastonline'] = vbdate($vbulletin->options['dateformat'], $user['lastactivity'], 1);
} else {
$user['lastonline'] = ' ';
}
fetch_musername($user);
return $user;
}
示例6: do_get_new_updates
function do_get_new_updates()
{
global $vbulletin;
require_once DIR . '/includes/functions_login.php';
$vbulletin->input->clean_array_gpc('r', array('username' => TYPE_STR, 'password' => TYPE_STR, 'md5_password' => TYPE_STR, 'fr_username' => TYPE_STR, 'fr_b' => TYPE_BOOL));
if (!$vbulletin->GPC['username'] || !$vbulletin->GPC['password'] && !$vbulletin->GPC['md5_password']) {
json_error(ERR_NO_PERMISSION);
}
$vbulletin->GPC['username'] = prepare_remote_utf8_string($vbulletin->GPC['username']);
$vbulletin->GPC['password'] = prepare_remote_utf8_string($vbulletin->GPC['password']);
if (!verify_authentication($vbulletin->GPC['username'], $vbulletin->GPC['password'], $vbulletin->GPC['md5_password'], $vbulletin->GPC['md5_password'], $vbulletin->GPC['cookieuser'], true)) {
json_error(ERR_NO_PERMISSION);
}
// Don't save the session, we just want pm & marked thread info
process_new_login('', false, '');
// Since we are not saving the session, fetch our userinfo
$vbulletin->userinfo =& fetch_userinfo($vbulletin->userinfo['userid']);
cache_permissions($vbulletin->userinfo, true);
$sub_notices = get_sub_thread_updates();
fr_update_push_user($vbulletin->GPC['fr_username'], $vbulletin->GPC['fr_b']);
return array('pm_notices' => $vbulletin->userinfo['pmunread'], 'sub_notices' => $sub_notices);
}
示例7: do_get_profile
function do_get_profile()
{
global $vbulletin;
$userinfo = vB_Api::instance('user')->fetchUserInfo();
$cleaned = vB::getCleaner()->cleanArray($_REQUEST, array('userid' => vB_Cleaner::TYPE_UINT));
if (!$userinfo['userid'] && !$cleaned['userid']) {
return json_error(ERR_INVALID_LOGGEDIN, RV_NOT_LOGGED_IN);
}
if (!$cleaned['userid']) {
$cleaned['userid'] = $userinfo['userid'];
}
$profile = vB_Api::instance('user')->fetchProfileInfo($cleaned['userid']);
if (empty($profile)) {
return json_error(ERR_NO_PERMISSION);
}
$values = array();
foreach ($profile['customFields']['default'] as $name => $value) {
$value = $value['val'];
if ($value === null) {
$value = '';
}
$values[] = array('name' => (string) new vB_Phrase('cprofilefield', $name), 'value' => $value);
}
$groups = array();
$groups[] = array('name' => 'about', 'values' => $values);
$out = array('username' => prepare_utf8_string($profile['username']), 'joindate' => prepare_utf8_string(fr_date($profile['joindate'])), 'posts' => $profile['posts'], 'online' => fr_get_user_online($profile['lastactivity']), 'avatar_upload' => $profile['canuseavatar'] ? true : false, 'groups' => $groups);
$avatarurl = vB_Library::instance('vb4_functions')->avatarUrl($cleaned['userid']);
if ($avatarurl) {
$out['avatarurl'] = $avatarurl;
}
cache_moderators();
cache_permissions($vbulletin->userinfo);
$canbanuser = ($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'] or can_moderate(0, 'canbanusers'));
if ($canbanuser) {
$out['ban'] = true;
}
return $out;
}
示例8: set_userid
/**
* Sets the user we're working with. Automatically sets permissions as well.
*
* @param integer User to process
* @param boolean Whether to fetch existing CSS data
*
* @return boolean True on success
*/
function set_userid($userid, $fetch = true)
{
$userid = intval($userid);
if ($userid == $this->registry->userinfo['userid']) {
$this->userid = $userid;
$this->permissions = $this->registry->userinfo['permissions'];
} else {
if ($user = $this->dbobject->query_first("SELECT * FROM " . TABLE_PREFIX . "user WHERE userid = {$userid}")) {
$this->userid = $userid;
$this->permissions = cache_permissions($user, false);
} else {
global $vbphrase;
$this->error[] = fetch_error('invalidid', $vbphrase['user'], $this->registry->options['contactuslink']);
return false;
}
}
if ($fetch) {
$this->existing = $this->fetch_existing();
}
return true;
}
示例9: print_no_permission
}
break;
// do move
// do move
case 'domove':
if (!can_moderate_calendar($calendarinfo['calendarid'], 'canmoveevents')) {
print_no_permission();
} else {
if (!($vbulletin->userinfo['calendarpermissions']["{$vbulletin->GPC['newcalendarid']}"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'])) {
print_no_permission();
}
// unsubscribe users who can't view the calendar that the event is now in
$users = $db->query_read("\n\t\t\t\t\tSELECT user.userid, usergroupid, membergroupids, infractiongroupids, IF(options & " . $vbulletin->bf_misc_useroptions['hasaccessmask'] . ", 1, 0) AS hasaccessmask\n\t\t\t\t\tFROM " . TABLE_PREFIX . "subscribeevent AS subscribeevent\n\t\t\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user USING (userid)\n\t\t\t\t\tWHERE eventid = {$eventinfo['eventid']}\n\t\t\t\t");
$deleteuser = '0';
while ($thisuser = $db->fetch_array($users)) {
cache_permissions($thisuser);
$userperms =& $thisuser['calendarpermissions']["{$vbulletin->GPC['newcalendarid']}"];
if ($userperms & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] and ($eventinfo['userid'] == $thisuser['userid'] or $userperms & $vbulletin->bf_ugp_calendarpermissions['canviewothersevent'])) {
// don't delete
continue;
} else {
$deleteuser .= ',' . $thisuser['userid'];
}
}
if ($deleteuser) {
$query = "DELETE FROM " . TABLE_PREFIX . "subscribeevent WHERE eventid = {$eventinfo['eventid']} AND userid IN ({$deleteuser})";
$db->query_write($query);
}
// init event datamanager class
$eventdata =& datamanager_init('Event', $vbulletin, ERRTYPE_STANDARD);
$eventdata->verify_datetime = false;
示例10: require_once
$userinfo['userid'] != $vbulletin->userinfo['userid']
AND
!$userinfo['bbuser_iscontact_of_user']
)
{
// are you a contact?
print_no_permission();
}
require_once(DIR . '/includes/functions_user.php');
if (!can_view_profile_section($userinfo['userid'], 'visitor_messaging'))
{
print_no_permission();
}
cache_permissions($userinfo, false);
if ($userinfo['usergroupid'] == 4 AND !($permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']))
{
print_no_permission();
}
$canpostmessage = (
$userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canviewmembers']
AND $vbulletin->userinfo['userid']
AND (
(
$vbulletin->userinfo['permissions']['visitormessagepermissions'] & $vbulletin->bf_ugp_visitormessagepermissions['canmessageownprofile']
AND $vbulletin->userinfo['userid'] == $userinfo['userid']
)
OR (
示例11: process_post_preview
/**
* Generates a Preview of a post
*
* @param array Information regarding the new post
* @param integer The User ID posting
* @param array Information regarding attachments
*
* @return string The Generated Preview
*
*/
function process_post_preview(&$newpost, $postuserid = 0, $attachmentinfo = NULL)
{
global $vbphrase, $checked, $rate, $previewpost, $stylevar, $foruminfo, $vbulletin, $show;
require_once DIR . '/includes/class_bbcode.php';
$bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
if ($attachmentinfo) {
$bbcode_parser->attachments =& $attachmentinfo;
}
$previewpost = 1;
$bbcode_parser->unsetattach = true;
$previewmessage = $bbcode_parser->parse($newpost['message'], $foruminfo['forumid'], iif($newpost['disablesmilies'], 0, 1));
$post = array('userid' => $postuserid ? $postuserid : $vbulletin->userinfo['userid']);
if (!empty($attachmentinfo)) {
require_once DIR . '/includes/class_postbit.php';
$post['attachments'] =& $attachmentinfo;
$postbit_factory =& new vB_Postbit_Factory();
$postbit_factory->registry =& $vbulletin;
$postbit_factory->forum =& $foruminfo;
$postbit_obj =& $postbit_factory->fetch_postbit('post');
$postbit_obj->post =& $post;
$postbit_obj->process_attachments();
}
if ($post['userid'] != $vbulletin->userinfo['userid']) {
$fetchsignature = $vbulletin->db->query_first("\n\t\t\tSELECT signature\n\t\t\tFROM " . TABLE_PREFIX . "usertextfield\n\t\t\tWHERE userid = {$postuserid}\n\t\t");
$signature =& $fetchsignature['signature'];
} else {
$signature = $vbulletin->userinfo['signature'];
}
$show['signature'] = false;
if ($newpost['signature'] and trim($signature)) {
$userinfo = fetch_userinfo($post['userid'], FETCH_USERINFO_SIGPIC);
if ($post['userid'] != $vbulletin->userinfo['userid']) {
cache_permissions($userinfo, false);
} else {
$userinfo['permissions'] =& $vbulletin->userinfo['permissions'];
}
if ($userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusesignature']) {
$bbcode_parser->set_parse_userinfo($userinfo);
$post['signature'] = $bbcode_parser->parse($signature, 'signature');
$bbcode_parser->set_parse_userinfo(array());
$show['signature'] = true;
}
}
if ($foruminfo['allowicons'] and $newpost['iconid']) {
if ($icon = $vbulletin->db->query_first_slave("\n\t\t\tSELECT title as title, iconpath\n\t\t\tFROM " . TABLE_PREFIX . "icon\n\t\t\tWHERE iconid = " . intval($newpost['iconid']) . "\n\t\t")) {
$newpost['iconpath'] = $icon['iconpath'];
$newpost['icontitle'] = $icon['title'];
}
} else {
if ($vbulletin->options['showdeficon'] != '') {
$newpost['iconpath'] = $vbulletin->options['showdeficon'];
$newpost['icontitle'] = $vbphrase['default'];
}
}
$show['messageicon'] = iif($newpost['iconpath'], true, false);
$show['errors'] = false;
($hook = vBulletinHook::fetch_hook('newpost_preview')) ? eval($hook) : false;
if ($previewmessage != '') {
eval('$postpreview = "' . fetch_template('newpost_preview') . "\";");
} else {
$postpreview = '';
}
construct_checkboxes($newpost);
if ($newpost['rating']) {
$rate["{$newpost['rating']}"] = ' ' . 'selected="selected"';
}
return $postpreview;
}
示例12: IF
$limitlower = 1;
}
$getevents = $db->query_read_slave("\n\t\tSELECT event.*, IF(dateline_to = 0, 1, 0) AS singleday, user.username, user.options, user.adminoptions, user.usergroupid, user.membergroupids, user.infractiongroupids, IF(options & " . $vbulletin->bf_misc_useroptions['hasaccessmask'] . ", 1, 0) AS hasaccessmask,\n\t\t\tsubscribeevent.reminder, subscribeevent.subscribeeventid\n\t\t\t" . ($vbulletin->options['avatarenabled'] ? ",avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight, customavatar.width_thumb AS avwidth_thumb, customavatar.height_thumb AS avheight_thumb, filedata_thumb, NOT ISNULL(customavatar.userid) AS hascustom" : "") . "\n\t\tFROM " . TABLE_PREFIX . "subscribeevent AS subscribeevent\n\t\tLEFT JOIN " . TABLE_PREFIX . "event AS event ON (subscribeevent.eventid = event.eventid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (event.userid = user.userid)\n\t\t" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON(customavatar.userid = user.userid)" : "") . "\n\t\tWHERE\n\t\t\tsubscribeevent.userid = " . $vbulletin->userinfo['userid'] . "\n\t\t\t\tAND\n\t\t\tevent.visible = 1\n\t\tORDER BY\n\t\t\t{$sqlsortfield} {$sortorder}\n\t\tLIMIT " . ($limitlower - 1) . ", {$perpage}\n\t");
$itemcount = ($pagenumber - 1) * $perpage;
$first = $itemcount + 1;
if ($db->num_rows($getevents)) {
$show['haveevents'] = true;
while ($event = $db->fetch_array($getevents)) {
if (empty($reminders["{$event['reminder']}"])) {
$event['reminder'] = 3600;
}
$event['reminder'] = $vbphrase[$reminders[$event['reminder']]];
$offset = $event['dst'] ? $vbulletin->userinfo['timezoneoffset'] : $vbulletin->userinfo['tzoffset'];
$event = array_merge($event, convert_bits_to_array($event['options'], $vbulletin->bf_misc_useroptions));
$event = array_merge($event, convert_bits_to_array($event['adminoptions'], $vbulletin->bf_misc_adminoptions));
cache_permissions($event, false);
fetch_avatar_from_userinfo($event, true);
$event['dateline_from_user'] = $event['dateline_from'] + $offset * 3600;
$event['dateline_to_user'] = $event['dateline_to'] + $offset * 3600;
$event['preview'] = htmlspecialchars_uni(strip_bbcode(fetch_trimmed_title(strip_quotes($event['event']), 300), false, true));
$event = fetch_event_date_time($event);
$event['calendar'] = $calendarcache["{$event['calendarid']}"];
$show['singleday'] = !empty($event['singleday']) ? true : false;
($hook = vBulletinHook::fetch_hook('calendar_viewreminder_event')) ? eval($hook) : false;
$oppositesort = $sortorder == 'asc' ? 'desc' : 'asc';
$templater = vB_Template::create('calendar_reminder_eventbit');
$templater->register('date1', $date1);
$templater->register('date2', $date2);
$templater->register('daterange', $daterange);
$templater->register('event', $event);
$templater->register('eventdate', $eventdate);
示例13: process_registered_user
/**
* Process note as if a registered user posted
*/
function process_registered_user()
{
global $show, $vbphrase;
fetch_musername($this->message);
$this->message['onlinestatus'] = 0;
// now decide if we can see the user or not
if ($this->message['lastactivity'] > (TIMENOW - $this->registry->options['cookietimeout']) AND $this->message['lastvisit'] != $this->message['lastactivity'])
{
if ($this->message['invisible'])
{
if (($this->registry->userinfo['permissions']['genericpermissions'] & $this->registry->bf_ugp_genericpermissions['canseehidden']) OR $this->message['userid'] == $this->registry->userinfo['userid'])
{
// user is online and invisible BUT bbuser can see them
$this->message['onlinestatus'] = 2;
}
}
else
{
// user is online and visible
$this->message['onlinestatus'] = 1;
}
}
if (!isset($this->factory->perm_cache["{$this->message['userid']}"]))
{
$this->factory->perm_cache["{$this->message['userid']}"] = cache_permissions($this->message, false);
}
if ( // no avatar defined for this user
empty($this->message['avatarurl'])
OR // visitor doesn't want to see avatars
($this->registry->userinfo['userid'] > 0 AND !$this->registry->userinfo['showavatars'])
OR // user has a custom avatar but no permission to display it
(!$this->message['avatarid'] AND !($this->factory->perm_cache["{$this->message['userid']}"]['genericpermissions'] & $this->registry->bf_ugp_genericpermissions['canuseavatar']) AND !$this->message['adminavatar']) //
)
{
$show['avatar'] = false;
}
else
{
$show['avatar'] = true;
}
$show['emaillink'] = (
$this->message['showemail'] AND $this->registry->options['displayemails'] AND (
!$this->registry->options['secureemail'] OR (
$this->registry->options['secureemail'] AND $this->registry->options['enableemail']
)
) AND $this->registry->userinfo['permissions']['genericpermissions'] & $this->registry->bf_ugp_genericpermissions['canemailmember']
AND $this->registry->userinfo['userid']
);
$show['homepage'] = ($this->message['homepage'] != '' AND $this->message['homepage'] != 'http://');
$show['pmlink'] = ($this->registry->options['enablepms'] AND $this->registry->userinfo['permissions']['pmquota'] AND ($this->registry->userinfo['permissions']['adminpermissions'] & $this->registry->bf_ugp_adminpermissions['cancontrolpanel']
OR ($this->message['receivepm'] AND $this->factory->perm_cache["{$this->userinfo['userid']}"]['pmquota'])
)) ? true : false;
}
示例14: exec_send_sg_notification
/**
* Sends email notifications for discussions.
*
* @param int $discussion - The discussion being updated
* @param int $messageid - Id of the message that triggered the update
* @param string $postusername - Optional username displayed on post
*/
function exec_send_sg_notification($discussionid, $gmid = false, $postusername = false)
{
global $vbulletin;
if (!$vbulletin->options['enableemail']) {
return;
}
$discussion = fetch_socialdiscussioninfo($discussionid);
// if there are no subscribers, no need to send notifications
if (!$discussion['subscribers']) {
return;
}
// if the discussion is moderated or deleted, don't send notification
if ('deleted' == $discussion['state'] or 'moderation' == $discussion['state']) {
return;
}
$group = fetch_socialgroupinfo($discussion['groupid']);
if (!$gmid) {
// get last gmid from discussion
$gmid = $vbulletin->db->query_first("\n\t\t\tSELECT MAX(gmid) AS gmid\n\t\t\tFROM " . TABLE_PREFIX . "groupmessage AS groupmessage\n\t\t\tWHERE discussionid = {$discussion['discussionid']}\n\t\t\t\tAND state = 'visible'\n\t\t");
$gmid = $gmid['gmid'];
}
// get message details
$gmessage = fetch_groupmessageinfo($gmid);
if (!$gmessage) {
return;
}
// get post time of previous message - if a user hasn't been active since then we won't resend a notification
$lastposttime = ($lastposttime = $vbulletin->db->query_first("\n\t\t\tSELECT MAX(dateline) AS dateline\n\t\t\tFROM " . TABLE_PREFIX . "groupmessage AS groupmessage\n\t\t\tWHERE discussionid = {$discussion['discussionid']}\n\t\t\t\tAND dateline < {$gmessage['dateline']}\n\t\t\t\tAND state = 'visible'\n\t")) ? $lastposttime['dateline'] : $gmessage['dateline'];
$discussion['title'] = unhtmlspecialchars($discussion['title']);
$group['name'] = unhtmlspecialchars($group['name']);
// temporarily use postusername in userinfo
if (!$postusername) {
// get current user name if user exists
if ($gmessage['postuserid'] and $userinfo = fetch_userinfo($gmessage['postuserid'])) {
$postusername = $userinfo['username'];
} else {
$postusername = $gmessage['postusername'];
}
}
$postusername = unhtmlspecialchars($postusername);
$userid = $gmessage['postuserid'];
($hook = vBulletinHook::fetch_hook('newpost_sg_notification_start')) ? eval($hook) : false;
$useremails = $vbulletin->db->query_read_slave("\n\t\tSELECT user.*, subscribediscussion.emailupdate, subscribediscussion.subscribediscussionid, IF(socialgroupmember.userid IS NOT NULL,1,0) ismember\n\t\tFROM " . TABLE_PREFIX . "subscribediscussion AS subscribediscussion\n\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (subscribediscussion.userid = user.userid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "usergroup AS usergroup ON (usergroup.usergroupid = user.usergroupid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember ON (socialgroupmember.userid = user.userid AND socialgroupmember.groupid = {$group['groupid']})\n\t\tWHERE subscribediscussion.discussionid = {$discussion['discussionid']}\n\t\t AND subscribediscussion.emailupdate = 1\n\t\t AND " . ($gmessage['postuserid'] ? " CONCAT(' ', IF(usertextfield.ignorelist IS NULL, '', usertextfield.ignorelist), ' ') NOT LIKE ' " . intval($userid) . " '" : '') . "\n\t\t AND user.usergroupid <> 3\n\t\t AND user.userid <> " . intval($userid) . "\n\t\t AND user.lastactivity >= " . intval($lastposttime) . "\n\t\t AND (usergroup.genericoptions & " . $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'] . ")\n\t");
vbmail_start();
// parser for plaintexting the message pagetext
require_once DIR . '/includes/class_bbcode_alt.php';
$plaintext_parser =& new vB_BbCodeParser_PlainText($vbulletin, fetch_tag_list());
$pagetext_cache = array();
// used to cache the results per languageid for speed
$evalemail = array();
while ($touser = $vbulletin->db->fetch_array($useremails)) {
// check user can view discussion
$permissions = cache_permissions($touser, false);
if (!($vbulletin->usergroupcache["{$touser['usergroupid']}"]['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isnotbannedgroup']) or !($permissions['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview']) or !($permissions['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canviewgroups']) or $group['options'] & $vbulletin->bf_misc_socialgroupoptions['join_to_view'] and !$touser['ismember'] and !($permissions['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canalwayscreatediscussion']) and !($permissions['socialgrouppermissions'] & $vbulletin->bf_ugp_socialgrouppermissions['canalwayspostmessage'])) {
continue;
}
$touser['username'] = unhtmlspecialchars($touser['username']);
$touser['languageid'] = iif($touser['languageid'] == 0, $vbulletin->options['languageid'], $touser['languageid']);
$touser['auth'] = md5($touser['userid'] . $touser['subscribediscussionid'] . $touser['salt'] . COOKIE_SALT);
if (empty($evalemail)) {
$email_texts = $vbulletin->db->query_read_slave("\n\t\t\t\tSELECT text, languageid, fieldname\n\t\t\t\tFROM " . TABLE_PREFIX . "phrase\n\t\t\t\tWHERE fieldname IN ('emailsubject', 'emailbody') AND varname = 'notify_discussion'\n\t\t\t");
while ($email_text = $vbulletin->db->fetch_array($email_texts)) {
$emails["{$email_text['languageid']}"]["{$email_text['fieldname']}"] = $email_text['text'];
}
require_once DIR . '/includes/functions_misc.php';
foreach ($emails as $languageid => $email_text) {
// lets cycle through our array of notify phrases
$text_message = str_replace("\\'", "'", addslashes(iif(empty($email_text['emailbody']), $emails['-1']['emailbody'], $email_text['emailbody'])));
$text_message = replace_template_variables($text_message);
$text_subject = str_replace("\\'", "'", addslashes(iif(empty($email_text['emailsubject']), $emails['-1']['emailsubject'], $email_text['emailsubject'])));
$text_subject = replace_template_variables($text_subject);
$evalemail["{$languageid}"] = '
$message = "' . $text_message . '";
$subject = "' . $text_subject . '";
';
}
}
// parse the page text into plain text, taking selected language into account
if (!isset($pagetext_cache["{$touser['languageid']}"])) {
$plaintext_parser->set_parsing_language($touser['languageid']);
$pagetext_cache["{$touser['languageid']}"] = $plaintext_parser->parse($gmessage['pagetext']);
}
$pagetext = $pagetext_cache["{$touser['languageid']}"];
($hook = vBulletinHook::fetch_hook('new_sg_message_notification_message')) ? eval($hook) : false;
eval(iif(empty($evalemail["{$touser['languageid']}"]), $evalemail["-1"], $evalemail["{$touser['languageid']}"]));
vbmail($touser['email'], $subject, $message);
}
$vbulletin->db->free_result($useremails);
unset($plaintext_parser, $pagetext_cache);
vbmail_end();
}
示例15: process_new_login
function process_new_login($logintype, $cookieuser, $cssprefs)
{
global $vbulletin;
$lang_info = array(
'lang_locale' => $vbulletin->userinfo['lang_locale'],
'lang_charset' => $vbulletin->userinfo['lang_charset']
);
$vbulletin->db->query_write("DELETE FROM " . TABLE_PREFIX . "session WHERE sessionhash = '" . $vbulletin->db->escape_string($vbulletin->session->vars['dbsessionhash']) . "'");
if ($vbulletin->session->created == true AND $vbulletin->session->vars['userid'] == 0)
{
// if we just created a session on this page, there's no reason not to use it
$newsession =& $vbulletin->session;
}
else
{
$newsession = new vB_Session($vbulletin, '', $vbulletin->userinfo['userid'], '', $vbulletin->session->vars['styleid'], $vbulletin->session->vars['languageid']);
}
$newsession->set('userid', $vbulletin->userinfo['userid']);
$newsession->set('loggedin', 1);
if ($logintype == 'cplogin')
{
$newsession->set('bypass', 1);
}
else
{
$newsession->set('bypass', 0);
}
$newsession->set_session_visibility(($vbulletin->superglobal_size['_COOKIE'] > 0));
$newsession->fetch_userinfo();
$vbulletin->session =& $newsession;
$vbulletin->userinfo = $newsession->userinfo;
$vbulletin->userinfo['lang_locale'] = $lang_info['lang_locale'];
$vbulletin->userinfo['lang_charset'] = $lang_info['lang_charset'];
// admin control panel or upgrade script login
if ($logintype === 'cplogin')
{
$permissions = cache_permissions($vbulletin->userinfo, false);
$vbulletin->userinfo['permissions'] =& $permissions;
if ($permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'])
{
if ($cssprefs != '')
{
$admininfo = $vbulletin->db->query_first_slave("SELECT * FROM " . TABLE_PREFIX . "administrator WHERE userid = " . $vbulletin->userinfo['userid']);
if ($admininfo)
{
$admindm =& datamanager_init('Admin', $vbulletin, ERRTYPE_SILENT);
$admindm->set_existing($admininfo);
$admindm->set('cssprefs', $vbulletin->GPC['cssprefs']);
$admindm->save();
}
}
$cpsession = $vbulletin->session->fetch_sessionhash();
/*insert query*/
$vbulletin->db->query_write("INSERT INTO " . TABLE_PREFIX . "cpsession (userid, hash, dateline) VALUES (" . $vbulletin->userinfo['userid'] . ", '" . $vbulletin->db->escape_string($cpsession) . "', " . TIMENOW . ")");
vbsetcookie('cpsession', $cpsession, false, true, true);
if (!$cookieuser AND empty($vbulletin->GPC[COOKIE_PREFIX . 'userid']))
{
vbsetcookie('userid', $vbulletin->userinfo['userid'], false, true, true);
vbsetcookie('password', md5($vbulletin->userinfo['password'] . COOKIE_SALT), false, true, true);
}
}
}
// moderator control panel login
if ($logintype === 'modcplogin')
{
$permissions = cache_permissions($vbulletin->userinfo, false);
$vbulletin->userinfo['permissions'] =& $permissions;
require_once(DIR . '/includes/functions_calendar.php');
if (can_moderate() OR can_moderate_calendar())
{
$cpsession = $vbulletin->session->fetch_sessionhash();
/*insert query*/
$vbulletin->db->query_write("INSERT INTO " . TABLE_PREFIX . "cpsession (userid, hash, dateline) VALUES (" . $vbulletin->userinfo['userid'] . ", '" . $vbulletin->db->escape_string($cpsession) . "', " . TIMENOW . ")");
vbsetcookie('cpsession', $cpsession, false, true, true);
if (!$cookieuser AND empty($vbulletin->GPC[COOKIE_PREFIX . 'userid']))
{
vbsetcookie('userid', $vbulletin->userinfo['userid'], false, true, true);
vbsetcookie('password', md5($vbulletin->userinfo['password'] . COOKIE_SALT), false, true, true);
}
}
}
($hook = vBulletinHook::fetch_hook('login_process')) ? eval($hook) : false;
}