<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Suma Plugin &#187; Concepts</title>
	<atom:link href="http://www.sumaplugin.com/documentation/concepts/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sumaplugin.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 20 Jun 2010 02:51:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Setting: Test Mode</title>
		<link>http://www.sumaplugin.com/article/231</link>
		<comments>http://www.sumaplugin.com/article/231#comments</comments>
		<pubDate>Wed, 30 Dec 2009 04:13:09 +0000</pubDate>
		<dc:creator>Brenton</dc:creator>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Settings]]></category>
		<category><![CDATA[Payment Gateways]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[Sandbox]]></category>
		<category><![CDATA[Test Mode]]></category>

		<guid isPermaLink="false">http://www.sumaplugin.com/beta/?p=231</guid>
		<description><![CDATA[Many of Suma&#8217;s features which require a license to operate in Production Mode can be run in Test mode without requiring a license.
Test Mode is useful if:

you want to experiment with a feature of Suma but don&#8217;t have a license for that feature, or
you are using a licensed feature in production and need to be [...]]]></description>
			<content:encoded><![CDATA[<p>Many of Suma&#8217;s features which require a license to operate in <strong>Production Mode</strong> can be run in <strong>Test mode </strong>without requiring a license.<span id="more-231"></span></p>
<p>Test Mode is useful if:</p>
<ol>
<li>you want to experiment with a feature of Suma but don&#8217;t have a license for that feature, or</li>
<li>you are using a licensed feature in production and need to be able to exercise it with test payment methods (i.e. Sandbox payment accounts) but without excluding regular users from using the site.</li>
</ol>
<p>Test Mode is available for most licensed features of Suma and is activated per feature from Suma&#8217;s Settings page in the Wordpress Administration area.</p>
<p>When a feature is activated in Test Mode:</p>
<ol>
<li>the feature will only be available in Test Mode to the Administrator (as explained below),</li>
<li>the feature will continue to operate in Live Mode for all other users if that feature is licensed, and</li>
<li>the feature will use the Sandbox Payment Processor when required (e.g. PayPal&#8217;s Sandbox instead of your Live account).</li>
</ol>
<p>An important principal of Test Mode is that its use is restricted to the Wordpress Administrator (specifically, requests from the Administrator&#8217;s computer).  If any other user requests a Test Mode enabled feature they will be given that feature operating in live mode if there is a valid license for it or it will be treated as a disabled feature if there is no valid license.  Suma achieves this operational behavior using the following mechanism.  When the Administrator activates Test Mode on a feature, Suma saves their IP Address (i.e. their network address), which is reported on the Settings page beneath each feature that is in Test Mode.  Then whenever Suma receives a request for that feature and Test Mode is enabled for it, it will compare the requester&#8217;s IP Address with the saved one. If they match then the request will be given a Test Mode version of the feature.  If they don&#8217;t match, then the requester will be given the Live Mode version of the feature if its been licensed otherwise its treated as though the feature is disabled.  Since only the Administrator has access to Suma&#8217;s Setting page, only the Administrator&#8217;s IP Address will be saved for comparison.</p>
<p>The Administrator&#8217;s IP address was used as the basis of this scheme because it allows the Administrator to access features in Test Mode without being logged into Wordpress.  This is an important requirement because Suma treats logged-in users differently than anonymous users (as when determining whether they have access to content, or whether access to Subscription Plans) and furthermore treats a logged-in user in the Wordpress Administrator role differently again (not interfering at all).  Using IP Addresses does however create the possibility that a malicious user could impersonate the IP Address of the Administrator in order to access a feature in Test Mode but this would merely offer them the ability to subscribe using a Sandbox account instead of a Production account and for this they would need the password for the Sandbox.  Since this scheme does not grant any access to the administrative functions of Suma or Wordpress,there is no threat that this could be used as a backdoor to perpetrate other exploits.</p>
<p>Being able to have the Administrator test a feature on a live site using the site&#8217;s live data and its actual configuration (posts, subscription plans, other plugins active on the site, etc) means the Administrator can reproduce the same scenarios as actual users without needing valid payment methods.  And allowing Suma to service both Sandbox and Live Payment Processors simultaneously means that you don&#8217;t need to shut out users from the site (e.g. maintenance mode) in order to run test transactions.</p>
<p>Features that can be run in Test Mode:</p>
<ul>
<li><a href="/article/50">Donations Feature</a></li>
<li><a href="/article/384">Onsite Recurring Payments Feature</a></li>
<li><a href="/article/452">Hosted Recurring Payments Feature</a></li>
<li><a href="/article/54">HTTPS Protocol</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sumaplugin.com/article/231/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing Subscription Plans</title>
		<link>http://www.sumaplugin.com/article/177</link>
		<comments>http://www.sumaplugin.com/article/177#comments</comments>
		<pubDate>Mon, 28 Dec 2009 07:37:43 +0000</pubDate>
		<dc:creator>Brenton</dc:creator>
				<category><![CDATA[Concepts]]></category>

		<guid isPermaLink="false">http://www.sumaplugin.com/beta/?p=177</guid>
		<description><![CDATA[An introduction to this concept is provided by the article: Introduction to Subscription Plans from the Operations Guide.
Subscription Plan Types: Guest and Paid
There are two types of Subscription Plans: Guest and Paid.  Guest Plans are free and thus don&#8217;t require any payment from the user when registering.  Paid Plans, in contrast, have billing terms associated with [...]]]></description>
			<content:encoded><![CDATA[<p>An introduction to this concept is provided by the article: <a title="Introduction to Subscription Plans" href="/operations-guide/subscription-plans">Introduction to Subscription Plans</a> from the <a title="Suma Operations Guide" href="/operations-guide">Operations Guide</a>.</p>
<h4>Subscription Plan Types: Guest and Paid</h4>
<p>There are two types of Subscription Plans: Guest and Paid.  Guest Plans are free and thus don&#8217;t require any payment from the user when registering.  Paid Plans, in contrast, have billing terms associated with them (e.g. $9.95 every month) and thus require a payment method from the user in order to complete their registration.  The payment methods accepted by Suma depend on how its been configured but could include a PayPal account or a credit card.</p>
<p><strong>Important Note.</strong> When no Payment Modules are activate Suma will prevent Paid Subscription Plans from being offered to users via the registration process and will not allow Paid Plans to be created or edited.  This is because without a Payment Module it is not possible to accept payment information from the user and thus not possible to register a user under such a plan.</p>
<h4>Creating a Subscription Plan</h4>
<p>Plans are created from the <em>Tools</em> → <em>Subscription Plans</em> page in Wordpress&#8217; administration area (click on the Create Paid Plan button or Create Guest Plan button).</p>
<p>If the Create Paid Plan button is disabled its because there is no <a href="http://www.sumaplugin.com/article/532" class="permalinker_link">Payment Module</a> active that supports recurring payments or its not correctly configured.  If its not correctly configured you&#8217;ll see error messages displayed on its Settings page.  So, unless a Payment Module is activate, only Guest Plans will be shown and only those which don&#8217;t have an expiry date.  In addition, any Paid Plans that may have been defined will not be displayed for management or offered to users if there isn&#8217;t a such a Module activated.</p>
<p>The following are key concepts about Subscription Plans:</p>
<h5>Plan Descriptions</h5>
<p>This field allows you to enter a description about the Plan.  It could be something like &#8220;Gold Level&#8221; or &#8220;Private Invitation&#8221;, and is considered the user-defined part of a Plan&#8217;s description.  Suma will generate the other part of the description (the contract part) based on the parameters you define in the Plan.  Examples of this would be &#8220;Free access for 15 days&#8221; and &#8220;$10.00 USD every month.&#8221;  Together the user-defined part and the contract part must not exceed 127 characters in length (a limitation imposed by PayPal).  Thus you are constrained in the amount of text you can include in the user-defined description and this depends directly on the length of the contract part which depends in turn on the parameters to the Plan.  Fortunately, you can edit the Plan once its created so that you can play with its description until its acceptable.  The reason for having contract wording in the description is its a requirement of PayPal&#8217;s Express Checkout service, but is considered good business practice in general.  Furthermore, since Suma&#8217;s contract generator uses the same grammar as PayPal you can be confident that the Plan&#8217;s terms are beyond dispute.  Finally, the entire description (user and contract parts) are displayed to the user when they are going through the registration process so that the user can compare different Plans based on their contracts.  If you want to provide more information about a Plan you can use Suma&#8217;s Customization API to add a hyperlink to the user-defined description (see getPlanDescriptionHREF() function) which can be used to link to another page on your website which provides more details about the Subscription Plan.</p>
<h5><strong>Access Codes</strong></h5>
<p>The Access Code is a (practically) unlimited length text field associated with each Plan.  It can be empty or contain any text you wish.  The purpose of the Access Code is to restrict availability to that Plan to only those users who know the Access Code.  In this way, you can create Plans (discounted or free) for certain individuals only.  You would provide those individuals the Access Code which they would enter in the Promotion Code field during the registration process and if the Code they enter is valid (i.e. linked to a Plan) then that Plan&#8217;s description is presented to the user.  If a Plan does not have an Access Code then that Plan is displayed to all users (provided its state is: Open to New Subscribers).  You will notice that Suma automatically assigns a random Access Code whenever a Guest Plan is created.  This is to ensure that you don&#8217;t inadvertently create a free alternative to your Paid Plans that is accessible by the public, who would surely choose the Guest Plan over the Paid Plan and thus negatively impact your sales.  If its your intention to have the Guest Plan be available to all users (a limited length Guest Plan for instance) then simply delete the text from the Access Code field and click on the Save button.</p>
<h5>Plan Period / Trial Period / Regular Billing Period</h5>
<p>Every Guest Plan has a period for which it is valid.  This can be a limited length period (e.g. 2 weeks) or unlimited.  After the Plan&#8217;s period ends (if ever) the access granted through that Plan will cease.  Suma does not allow users to re-subscribe to the same Guest Plan again unless its a non-expiring Guest Plan or the Guest Plan&#8217;s period hasn&#8217;t expired (as measured from when the user first subscribed to the Plan).  Note: this restriction is per user account, so users may try to defeat this by signing up under a different username and email address.</p>
<p>Paid Plans all have an optional Trial Period followed by a required Regular Period.  The Trial Period, if specified, represents one billing cycle (i.e. one payment) if the Trial Amount is non-zero.  The Trial Amount can also be zero in which case it become a free Trial Period.  If there is an amount specified then it is billed at registration time.  If there is no Trial Period, then the Plan begins with the Regular Period.  Regular Periods must have a non-zero billing amount specified (i.e. they can&#8217;t be free).</p>
<h5>Member&#8217;s Wordpress Role</h5>
<p>If a user is registering for the first time then Suma will create a Wordpress user account for them in addition to setting up a Subscription Profile for that user.  When a user successfully subscribes to a Subscription Plan, Suma will set the Wordpress Role of that user&#8217;s account to the value specified by this field in the Subscription Plan.  It should be noted that Suma doesn&#8217;t use Roles in its access control decision making process.  Those decisions are made entirely based on whether the user has an active Subscription Profile or not and whether that Profile grants access to the content they are requesting.</p>
<h4>Editing a Subscription Plan</h4>
<p>Subscription Plans can be edited (as of Suma 3.0) to allow you to alter the parameter values for the plan.  Any changes made to a Subscription Plan will only apply to users who subscribe to that Plan after the changes have been made.  Users who have already subscribed to the Plan will not have their Subscription Profiles changed.  Thus, changes to a Subscription Plan do not affect current Subscribers to that Plan but only future subscribers.</p>
<h4>Terminating a Subscription Plan</h4>
<p>Subscription Plans can be terminated from the Subscription Plan Manager.  Terminating a Plan means that every user who is subscribed to that Plan will have their subscription canceled.  When all the cancelations are successful, you will then be able to Delete the plan.  If you merely wish to stop offering the Plan to new users and do not want to cancel the subscriptions of existing subscribers then you can close the Plan to new subscribers instead.  This is achieved by clicking on the Plan&#8217;s Yes button for the field &#8220;Open to New Subscribers&#8221; in the Subscription Plan Manager which will toggle the value to No.  This action is reversible and is achieved by clicking on the button again.  Setting this parameter to No instructs Suma to not allow new users to subscribe to this Plan and thus it will not be shown as a choice during registration.</p>
<p><strong>See Also:</strong></p>
<ul>
<li><a href="http://www.sumaplugin.com/article/855" class="permalinker_link">Subscription Groups</a> for creating more selective Content Access models</li>
<li><a href="http://www.sumaplugin.com/article/52" class="permalinker_link">Hosted Recurring Payments</a> and <a href="http://www.sumaplugin.com/article/52" class="permalinker_link">Onsite Recurring Payments</a></li>
<li><a href="http://www.sumaplugin.com/developers-guide/customization-api">Suma&#8217;s Customization API</a> getPlanDescriptionHREF() for adding a hyperlink to a Plan&#8217;s user-defined description</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sumaplugin.com/article/177/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Suma Shortcode: [suma]</title>
		<link>http://www.sumaplugin.com/article/112</link>
		<comments>http://www.sumaplugin.com/article/112#comments</comments>
		<pubDate>Sun, 27 Dec 2009 06:55:29 +0000</pubDate>
		<dc:creator>Brenton</dc:creator>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[shortcodes]]></category>

		<guid isPermaLink="false">http://www.sumaplugin.com/beta/?p=112</guid>
		<description><![CDATA[Suma provides its own built-in shortcode "[suma]" using this technology which allows authors to restrict access to select parts of a Post's content.  ]]></description>
			<content:encoded><![CDATA[<p>Short Codes is a feature introduced in Wordpress 2.5 that allows macro codes to be inserted into the content of Posts or Pages in order to manipulate parts of that content.</p>
<p>Suma provides its own built-in shortcode &#8220;[suma]&#8221; using this technology which allows authors to restrict access to select parts of a Post&#8217;s content.  Using shortcodes can thus be more selective than marking the entire Post as restricted, and so compliments Suma&#8217;s other mechanism for restricting access (Setting the <a href="http://www.sumaplugin.com/article/12" class="permalinker_link">Visibility of Restricted Posts</a>).</p>
<p>The Suma short code is used to tag content.  Thus it has opening and closing tags.  An example of use is:</p>
<p style="text-align: left; padding-left: 30px;"><span style="color: #003366;">Some content here.  [suma] This content will be subject to Suma&#8217;s access control rules. [/suma].  More content here.</span></p>
<p>The following arguments can be used with this tag:</p>
<ul>
<li><strong>notLoggedInMsg=&#8217;</strong><em><strong>msg</strong></em><strong>&#8216;</strong> &#8211; If the tagged content is requested by a user who isn&#8217;t logged into Wordpress then Suma returns <em>msg</em> instead of the tagged content.  Msg maybe HTML code.</li>
<li><strong>noSubscriptionMsg=&#8217;</strong><em><strong>msg</strong></em><strong>&#8216;</strong> &#8211; If the tagged content is requested by a user who is logged into Wordpress and who is a subscriber but doesn&#8217;t have any active subscriptions (e.g. their subscriptions have expired) the Suma returns <em>msg</em> instead of the tagged content. Msg maybe HTML code.</li>
<li><strong>inadequateSubscriptionMsg=&#8217;</strong><em><strong>msg</strong></em><strong>&#8216;</strong> &#8211; If the tagged content is requested by a user who is logged into Wordpress and who is a subscriber but doesn&#8217;t have a subscription which provides access to this content then Suma returns <em>msg</em> instead of the tagged content. Msg maybe HTML code.</li>
<li><strong>restrictedTo=&#8221;</strong><em><strong>SubscriptionGroupName</strong></em><strong>[,</strong><strong><em>SubscriptionGroup</em></strong><em><strong>Name</strong></em><strong>]&#8220;]</strong> &#8211;  The user requesting the tagged content must have an active subscription belonging to one of the named Subscription Groups for Suma to allow them access the tagged content, otherwise Suma considers the user to have insufficient access privileges.  This parameter thus modifies the access decisions of the above arguments.</li>
<li><strong>invert</strong> &#8211; Inverts the decision to replace or not replace the tagged content.</li>
</ul>
<p>These arguments can be used in combination within the same tag.</p>
<p>The following examples can be used with a default installation of Suma.</p>
<p>Example 1.  Require the user to be logged into Wordpress (with or without a subscription) in order to view the tagged content.</p>
<p style="padding-left: 30px;"><span style="color: #003366;">This is untagged content.<br />
[suma notLoggedInMsg='You must be logged in to view this content']<br />
Content viewable only when logged-in.<br />
[/suma]<br />
Resuming with regular content.</span></p>
<p>Example 2.  Display a message but only to users who aren&#8217;t subscribers.  This could be used for instance to display advertisements to non-members and leave members to view the Post without ads.</p>
<p style="padding-left: 30px;"><span style="color: #003366;">This is untagged content.<br />
[suma invert noSubscriptionMsg='This text is displayed to users who aren't logged in and could have been the HTML for an advertisement'/]<br />
Resuming with regular content.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sumaplugin.com/article/112/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Restricted Posts and Pages are only Partly Hidden</title>
		<link>http://www.sumaplugin.com/article/89</link>
		<comments>http://www.sumaplugin.com/article/89#comments</comments>
		<pubDate>Sun, 27 Dec 2009 04:44:20 +0000</pubDate>
		<dc:creator>Brenton</dc:creator>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Design Principles]]></category>

		<guid isPermaLink="false">http://www.sumaplugin.com/beta/?p=89</guid>
		<description><![CDATA[One of the distinguishing features of Suma&#8217;s operation compared with other Membership Management systems is that viewers who don&#8217;t have access to a Post or Page are still given some indication that it exists.
Suma achieves this by replacing certain elements of a Post or Page (e.g. the body, parts of the body, comments or excerpts) which [...]]]></description>
			<content:encoded><![CDATA[<p>One of the distinguishing features of Suma&#8217;s operation compared with other Membership Management systems is that <strong>viewers who don&#8217;t have access to a Post or Page are still given some indication that it exists</strong>.<span id="more-89"></span></p>
<p>Suma achieves this by replacing certain elements of a Post or Page (e.g. the body, parts of the body, comments or excerpts) which are not accessible by the viewer with messages explaining that they don&#8217;t have permission to view this information and how they can obtain it. Suma gives the site&#8217;s administrator the ability to choose which of these elements are to be displayed (See <a href="http://www.sumaplugin.com/article/12" class="permalinker_link">Visibility of Restricted Posts</a> Setting and <a href="http://www.sumaplugin.com/article/112" class="permalinker_link">Suma ShortCodes</a>).</p>
<p>The advantages of this approach are:</p>
<ul>
<li>Lets the viewer know what they&#8217;re missing.  A well written title and excerpt can inform the visitor of what the post or page is about without revealing its details.  It can thus generate interest in the article and persuade the visitor to subscribe to your website to read the entire article.</li>
<li>Allows the depth and breadth of content on your site to be revealed even if the content is not accessible.  If your site&#8217;s content is extensive (an important factor in search engine rankings) then using this approach will ensure that coverage is reflected to the public.</li>
<li>Lets search engines do a better job of indexing your website.  Using this approach search engines will be able to view key elements of the page such as keywords found in the excerpt and meta-tags you have added.  Whereas if the page were hidden from non-members then search engines would encounter a generic not-found page which would lack content specific to that page that is essential for the engine&#8217;s ability to properly rank it.</li>
<li>Doesn&#8217;t interfere with other approaches.  This approach doesn&#8217;t interfere with or prevent you from using Wordpress&#8217; native access controls to either hide a page completely or password protect the page through its Visibility attribute.</li>
</ul>
<p><strong>See Also:</strong></p>
<ul>
<li><a href="http://www.sumaplugin.com/article/12" class="permalinker_link">Visibility of Restricted Posts</a> setting</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sumaplugin.com/article/89/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
