IPS Staff
  • Content count

  • Joined

  • Last visited

About bfarber

Contact Methods

IPS Marketplace

  • Resources Contributor Total file submissions: 9

Profile Information

  • Gender Male
  • Location Southwest VA
  • Interests This is my interests, just for "Rikki" :)

Recent Profile Visitors

738,705 profile views
  1. Twisted "Remember me" sign in logic

    Just so it's known, you are quoting a post of mine from five and a half years ago.
  2. Upon upgrading to 4.0.13 and then to you may find that your theme's custom logo image, favicon image and/or sharer logo have gone missing. To resolve this issue, apply the following patch: system/Theme/Theme.php Afterwards, you will need to reupload your theme logo (as well as the sharer and favicon images, if they are also missing) by clicking the edit icon next to your theme in the ACP and uploading the images on the Logo tab.  Once you apply the patch and reupload the images, they will not go missing again during future upgrades. Theme.php
  3. Depending upon your server configuration, you may find that you are unable to upload files over a certain size that you should be able to upload.  For instance, with PHP 5.6 if you configure your upload_max_filesize php.ini setting to allow file uploads of '1G' you may get an error when uploading files over 1M to your server.   To resolve this issue, upload the files in the following patch to your server, preserving the directory structure and overwriting the copies already present.  This issue is resolved in the next release.
  4. Working with members

    If you are developing for 4.0 you will almost certainly need to interact with member accounts at some point.  Thankfully, doing so is easy in 4.0.The primary member class in 4.0 is \IPS\Member./* Get the currently logged in member */ $member = \IPS\Member::loggedIn(); /* Load a specific member by ID */ $member = \IPS\Member::load( 1 ); /* Load a specific member by email address */ $member = \IPS\Member::load( '', 'email' ); /* Get a guest object, or create a new member */ $member = new \IPS\Member; Once you have an instance of \IPS\Member to work with, you can adjust values for that member account by simply setting properties on the object that correspond to the columns in the core_members database table.  For instance, to change a member's language selection you can do the following /* Get the member reference */ $member = \IPS\Member::load( 1 ); $member->language = 2; $member->save(); You need to call the save() method after changing a value in order for it to be saved to the database, otherwise the change will only persist throughout the current page view (or until save() is called at some later point, especially if working with \IPS\Member::loggedIn()).  If you are working with a guest object and you call save() against the object, a new member record will be stored to the database (i.e. this is how you create a new member).There are some getters and setters defined in this class to facilitate actions that need to occur.  For instance, when setting the member's name, the member's seo name is automatically updated and the display name change log is automatically accounted for.Some special properties made available via getters:$member->group: This is a special getter (this is a property, not a method) that will return the member's group data.  This method will automatically merge permissions from the primary group and one or more secondary groups, giving the member the best possible permissions based on their group memberships.$member->groupName: This will return the user's group name, formatted based on the ACP group configuration.$member->groups: This will return an array of all group IDs the member belongs to$member->real_name: This will return the member's name or an empty string for a guest, instead of returning the language string for 'guest' if the user is actually a guest.$member->birthday: This will return the member's localized birthday, taking into account the fact that providing a birth year is optional.$member->photo: This property returns the member's photo as an \IPS\Url object (which can be cast to a string to get the URL to the photo).  The photo is made safe for viewing in the ACP as necessary.$member->rank: This method returns an array representing the title and image for the member's current 'rank' based on the ACP ranks configuration, taking into account the fact that both an uploaded image and "pip" images are supported. There are some methods in the \IPS\Member class you should be familiar with.$member->delete( $setAuthorToGuest=TRUE ): Call this method to delete a member.  The only accepted parameter indicates whether or not to set any content authored by the member to a guest account if TRUE, or to delete that content if FALSE.  Be aware that if you use any external login handlers that support deleting a member, the member will be deleted in those external databases as well.$member->flagAsSpammer(): This method will flag the user account as a spammer, removing or hiding their content based upon the administrator's configuration, and report the spammer to the IPS Spam Service (if configured to do so).$member->unflagAsSpammer(): This method will unflag the user account as a spammer, reporting the change in status to the IPS Spam Service if configured to do so.$member->age( $date=NULL ): Return the member's age.  If an \IPS\DateTime object is supplied as the only parameter to the method, the age is calculated based on the supplied date.$member->location(): Return the member's current location on the site, if they are online.$member->isAdmin(): Return whether the member is an administrator or not.$member->isOnline(): Return whether the member is currently online or not.$member->isBanned(): Return whether the member is banned or not, including temporary bans.$member->inGroup( $group, $permissionArray=FALSE ): Check whether the member belongs to a group or set of groups.  $group can be a group ID (integer), an instance of \IPS\Member\Group, or an array of group IDs or instances of \IPS\Member\Group.  If the user is a member of ANY group in the array, the method returns TRUE.  If $permissionArray is passed as TRUE, the member is checked against the member's permission array instead of the group IDs.$member->language(): Returns an instance of \IPS\Lang for the member based on their preference, or based upon automatic detection/default language setting if the member has not chosen a language.  This is used to retrieve language strings, e.g. \IPS\Member::loggedIn()->language()->addToStack( 'language_string' );$member->url(): Return the URL to the member's profile as an instance of \IPS\Http\Url.$member->acpUrl(): Return the URL to the edit member page in the ACP as an instance of \IPS\Http\Url.$member->link( $warningRef=NULL, $groupFormatting=FALSE ): Return an HTML link to the member's profile.  If $warningRef is passed as a string, this will represent the reference key for warning the member (if the user is warned).  $groupFormatting indicates whether or not to format the name displayed using the member's group formatting options set up by the administrator.$member->profileFields(): Return the custom profile fields for the member as an array of profile field objects.$member->contentProfileFields(): This is similar to profileFields() but instead only returns profile fields designed to display next to the user's content (e.g. in the left sidebar next to a post)$member->ipAddresses(): Return the IP addresses used by the member$member->markAllAsRead(): Mark the entire site as read for the member.$member->markersItems( $app, $key ): Fetch the item markers for the member for the given application and key.$member->markersResetTimes( $app ): Fetch the item marker reset times for the member for the given application.$member->warnings( $limit, $acknowledged=NULL, $type=NULL ): Retrieve the member's warnings. Limit can be passed as an integer to limit how many are returned. If $acknowledged is NULL, all warnings are returned, or TRUE or FALSE can be passed to limit the warnings to only acknowledged or unacknowledged warnings.  If $type is passed as a string, will only pull warnings of that type.$member->reputation(): This method returns the member's reputation as a language string.$member->reputationImage(): This method returns the member's reputation image.$member->encryptedPassword( $password ): Encrypt a plain text password for the member using the member's salt (you may wish to update the salt before calling this for a new password).$member->generateSalt(): Generate a new salt for the member.$member->notificationsConfiguration(): Return the member's notifications configuration.$member->following( $app, $area, $id ): Determine if the member is following a specific app, area and ID combination (all values must be passed)$member->acpRestrictions(): Return the member's ACP restrictions to determine which areas of the ACP the member can access.$member->modPermissions(): Return the member's moderator permissions, if any.$member->reportCount(): Get the number of reported content items that the member can view in the report center.$member->isIgnoring( \IPS\Member $member, $type ): Determine if the member is ignoring another member.  $type must be passed and should be one of 'signatures', 'topics' or 'messages'.$member->createMenu(): Fetch the member's create menu.  This is cached (and cleared automatically when needed).$member->moderateNewContent(): Determine if new content created by the member should be moderated.$member->coverPhoto(): Return the member's cover photo, if any.$member->hasAcpRestriction( $app, $module=NULL, $key=NULL ): Determine if the member has an ACP restriction set for a given $app, $module and $key combination (only $app is required).  If the member does have the restriction set, it means they can access the given area.$member->modPermission( $key=NULL ): Determine if the member has a given moderator permission available for their account (pass NULL to determine if the member has any moderator permissions available).$member->canWarn( \IPS\Member $member ): Determine if the current member can warn another member.$member->checkLoginKey(): Check that the member has a login key set and it is not expired.$member->recountNotifications(): Recount the member's unread notifications.$member->recountContent(): Recount the member's content item contributions.$member->recountReputation(): Recount the member's reputation count.$member->canAccessModule( $module ): $module should be an instance of \IPS\Application\Module and the method returns whether the member can access the module or not.$member->validate(): Mark the member as validated.$member->merge( \IPS\Member $otherMember ): Merge the current member with another member account (note that content merging occurs in the background and may not happen immediately; additionally, the member account that will be removed will not be deleted until all content is merged, this is queued).$member->checkPostsPerDay(): Check the posts per day restrictions to see if the member can visit.$member->checkGroupPromotion(): Check whether the member should be promoted to another group, and do so if so.  Note that save() still needs to be called manually afterwards.$member->clearCreateMenu(): Clear the cached create menu for the member. Note that applications can define MemberSync extensions to perform specific actions at the following points:onDelete: This method in a MemberSync extension is called when a member is deleted (be aware that their content may still exist in the database and be queued for deletion)onCreateAccount: This is called when a new account is created.onProfileUpdate: This is called when an existing account is updatedExtensions are created in the Developer Center of an application in the Admin Control Panel.
  5. Upon upgrading to 4.0.13 you may find that remote storage of files through FTP may no longer work correctly.  Files may get stored two levels deep, incorrectly.  For instance, you may find files in the configured storage directory under a path such as monthly_09_2015/monthly_09/2015/filename.To correct this issue, please upload the following file to your serversystem/File/ Ftp.phpFor existing files that may have been affected by this issue, simply log in to the remote FTP server and manually move the files up one directory to the correct location. Ftp.php
  6. An issue is present in the 4.0.13 release if you attempt to edit Themes, Forums, Categories and other similar containers in the Admin Control Panel if you are running PHP 5.3 on your server.  This is a bug in the 4.0.13 release which is corrected for the next version. To rectify the problem on your site, please download the attached zip file, extract it, and then upload the contents to your server, overwriting the files already Important Note: PHP 5.3 is end-of-life by PHP itself for over a year now. If you are still running PHP 5.3 please ask your web host to upgrade. IPS Community Suite 4.1 will not support PHP 5.3.
  7. 08-07-2015We are releasing a patch for IP.Board 3.3.x and 3.4.x to address a potential cross-site scripting (XSS) issue, and we are releasing a patch for IP.Nexus 1.5.9 to address an issue where license keys may be exposed to unauthorized users. The IP.Nexus patch also includes an updated SagePay payment gateway, required for all users that use Sagepay integration as of July 31, 2015, as well as an update to the Stripe payment gateway to use their "v2" javascript integration.It has been brought to our attention that specifically crafted files uploaded as attachments to IP.Board may allow for javascript to execute.  It has also been brought to our attention that specifically crafted URLs may allow for exposure of license keys otherwise kept private throughout IP.Nexus.To apply the patchSimply download the attached zip for your IP.Board version and upload the files to your forum server.  IP.Nexus IP.Board IP.Board 3.3.x:board33x_patch_08072015.zipIf you are an IPS Community in the Cloud client running IP.Board 3.3 or above, no further action is necessary as we have already automatically patched your account. If you are using a version older than IP.Board 3.3, you should contact support to upgrade.If you install or upgrade to IP.Board 3.4.8 or IP.Nexus 1.5.9 after the date and time of this post, no further action is necessary as we have already updated the main download zips. We would like to thank ESET for reporting the IP.Board XSS issue to us, and we would like to thank user "vekmor" for reporting the IP.Nexus license key exposure issue to us.

    This release primarily focuses on stability with many bug fixes from both tickets and the bug tracker. In addition to dozens of fixes, important items include:When unflagging a member as a spammer, if any tasks are still queued to delete or hide the member's content the tasks will be cancelled.  This is useful if you flag a user as a spammer and then immediately change your mind and unflag the member.NO_STEP issue during upgrade should now be resolvedLists were not rebuilding correctly coming from 3.4.xChanged rebuild routines to not use internal embeds as it represents a change from the way content looked pre-upgradeThere were some infinite redirect issues in some cases when Pages was used, particularly when the gateway file was usedFixed an issue related to core_cache and the task not runningUpdateVersion fixes an issue in a recent Google Chrome update that caused some pages to render poorly.
  9. Unless I'm misunderstanding, this feature is present in the Top Downloads widget. 
  10. 12139618.jpg

    From the album Test pictures

  11. While some cookies will almost always be set by the Community Suite, there are some cookies that are set only in very specific circumstances.  If you have a need to identify all cookies the Community Suite may set, the following is a list of cookies and their intended purposes.  Note that it is possible to change the cookie prefix in the community suite, so you may have a different prefix than "ips4_".ips4_hasJS: This cookie is set by javascript and then later read to determine if javascript is supported in the user agent.ips4_ipsTimezone: This cookie is set by javascript to detect the user's local time zone so that the software can adapt the displaying of times automatically.ips4_IPSSessionFront: This is a session tracking cookie, used to track the user between page clicks.ips4_member_id: This cookie would contain the user's member ID, used to "remember" the user in case their session ends between visits.ips4_pass_hash: This cookie would contain a hash used to validate that the viewing user's member ID was not forged (it is not the actual password hash).ips4_chat_user_id: (Guests only, Chat only) this cookie would track a guest user's unique "user ID" in the chat roomips4_cms_filters: (Pages only) this cookie would track filters set by a user when filtering content in the Pages application.ips4_ipsApprovalQueueSplash: (Moderators only) this cookie would track that a user has acknowledged the splash screen in the Moderator CP so that it is not shown again.ips4_vseThemeId: (Admins only) this cookie tracks which theme you are editing with the Visual Theme Editor (Easy Mode themes)ips4_vle_editor: (Admins only) this cookie tracks that you are using the visual language editor.ips4_vle_keys: (Admins only) this cookie is also used in conjunction with the visual language editor to track your changes.ips4_acpTabs (Admins only) this cookie is used to track your ACP tab preferencesips4_language (Guests only) this cookie is used to track a language preference for a guest if the site has more than one language installed and the guest user chooses a specific language to use.ips4_anon_login: This cookie is used to track a user's anonymous login preference if they choose this option during the login process.ips4_theme: (Guests only) this cookie is used to track a theme preference for a guest if the site has more than one theme installed and the guest user chooses a specific theme to use.ips4_ipbforumpass_XXX: When a forum has a specific password set, this cookie is set once a user logs in to that forum to validate that they have logged in on subsequent page loads.ips4_thumbnailSize: (Gallery only) this cookie tracks what type of table layout to use in Gallery listings (list view, small thumbnails or large thumbnails)ips4_cm_reg: (Commerce only) this cookie is used to track an invoice ID for a guest who is checking out so that we can associate the invoice correctly after the user registers or logs in.ips4_support_order: (Commerce only, Admins only) this cookie is used to track a user's support preferences while using the support system in the ACP to answer tickets.ips4_support_filters: (Commerce only, Admins only) this cookie is used to track a user's support preferences while using the support system in the ACP to answer tickets.ips4_referred_by: (Commerce only) this cookie is used to track referrals in Commerce when one user refers another user to a purchase.ips4_noCache: (Commerce only, Guests only) this cookie is set in order to prevent pages that have been cached from being served to a guest during the checkout process, as the software has the ability to cache guest pages for a configured period of time.ips4_storeView: (Commerce only) this cookie tracks a user's preference for viewing the store on the site, whether to show it in list view or grid view. Be aware that third party addons may set cookies as well, and that third party services integrated with the Suite (such as Google Analytics or Facebook Logins) may also set their own cookies.
  12. IMG-5946.JPG

  13. Thank you for the positive comments - they're appreciated 
  14. Upon upgrading you may find that attached files and emoticons within posted content (such as posts and signatures) are broken.  This issue was caused by a bug in the 4.0.5 and upgrade routines that has since been fixed, however if you upgraded to one of these versions directly you may be affected. To resolve the issue, please download the attached fiximages.php script.  Upload this file to your suite root directory (where conf_global.php is located) and then visit it in your browser (i.e.  You will need to click a button to reinitiate the task that rebuilds the image URLs.Afterwards, you can elect to run the background tasks from your ACP dashboard manually if you wish, or allow them to run in the background.  The URLs to emoticons and images will be updated appropriately.  fiximages.php
  15. You may find that your topics are not being included in the sitemap that the Community Suite automatically generates.  This may be noticed specifically after upgrading from an earlier version of IP.Board, however can also occur after a new installation of the Community Suite if an administrator configures the software appropriately.Topics within forums can be excluded from the sitemap by editing the forum and configuring the "Sitemap Priority" to "Do Not Include".Topics within these forums will not be included in the sitemap - if all forums are configured this way, then no topic sitemap will be generated. Only topics within forums that guests are allowed to access will be included in the sitemap.  If you do not allow guests to read topics in any forums (or if you exclude, per the screenshot above, the forums that guests are able to read), then no topics will be included in the sitemap. If you disable the 'forums' module for guests under the System tab -> Applications -> click on Forums to expand it, then this has the same effect as above: guests will not be able to access the forums and subsequently the topics will not be included in the sitemap. Finally, you can use the ACP live search to look for 'Sitemap'. If you do not use the Recommended Settings, you are able to exclude individual types of content from the sitemap. From this page, you can configure Topics to include 0 items, or to exclude them from the sitemap. There are many different ways to exclude topics from being included with the sitemap. Before submitting a ticket if you believe there to be an issue, you should check the above-mentioned things to ensure that topics are not being excluded from a sitemap due to your configured settings.