Hi,
I've created a non recurring subscription.
When a user subscribes, Paypal sends a "subscr_eot" immediatly after the payment.
It even happened that this "subscr_eot" was sent *before* the payment.
It seems to be a bug from Paypal .
Have you ever run into it?
Any help appreciated!

Comments

wbzial’s picture

Priority: Normal » Critical

i'm experiencing the exact same issue.

anrikun’s picture

I've contacted Paypal after running into this issue.
Even if it is not clearly stated on Paypal's site, Paypal does not handle non recurring subscriptions the way we could expect.
As there's only one payment, it considers that its job is done and send "subscr_eot" immediatly.
The only way I found to handle non recurring subscriptions was to modify lm_paypal's code so that non recurring subscriptions are traited as one-click/donate payments.
Doing so, "subscr_eot" is never sent by Paypal. So I had to add some code so that lm_paypal checks itself whether a subscription has ended or not each time cron runs.

wbzial’s picture

Well, if you could explain a bit the edit you've done, that would be much apreciated!!!!!

Good thing to know that someone went through !!!

anrikun’s picture

I've changed so much stuff that I'm not sure I can explain it easily but I can post some code so that you can try:
In lm_paypal.module, add 1 line:

<?php
/**
 * Process a newly arrived web_accept IPN message
 *
 * @param $ipn
 */
function lm_paypal_process_in_web_accept($ipn) {
  _lm_paypal_ini();
  global $_lm_paypal_debug;

  if ($_lm_paypal_debug) {
    watchdog(LM_PAYPAL, 'in_web_accept');
  }

  return lm_paypal_process_in_subscr($ipn); // Add this line here



  $link = l(t('view'), "admin/settings/lm_paypal/id/$ipn->id");
?>

In lm_paypal_subscriptions.module, change lm_paypal_subscribe this way:

<?php

    /*
    if ($so->return_url != '') {
      $ret_url = $so->return_url;
    }
    else {
      $ret_url = $_lm_paypal_subscriptions_inprogress;
    }
    */
    $ret_url = $_GET['q']; // Henri
    if (variable_get('clean_url', 0)) {
      $return_url = url(check_url($ret_url), array('query' => NULL, 'fragment' => NULL, 'absolute' => TRUE));
    }
    else {
      $return_url = url(NULL, array('query' => 'q='. check_url($ret_url), 'fragment' => NULL, 'absolute' => TRUE));
    }
    $notify_url = url('lm_paypal/ipn', array('query' => NULL, 'fragment' => NULL, 'absolute' => TRUE));
    $biz = check_plain($_lm_paypal_business);
    $so->item_name = check_plain($so->item_name);

    // Output a form that will redirect the user to PayPal - note all the fields
    // are hidden so only the submit appears

    // Henri
    if ($so->kind == 0 || $so->kind == 2) {
      $custom = $user->uid;
    }
    if ($so->kind == 1) {
      $custom = ($nid << 16) | ($user->uid & 0xFFFF);
    }
    $currency_code = ($so->currency_code) ? $so->currency_code : 'EUR';

    $form  = '<form id="lm_paypal_form" action="https://'.$_lm_paypal_host.'/cgi-bin/webscr" method="post"><div>'."\n";
    $form .= '<input type="hidden" name="cmd" value="_xclick" />'."\n";
    $form .= '<input type="hidden" name="business" value="'.$biz.'" />'."\n";
    $form .= '<input type="hidden" name="item_name" value="'.t($so->item_name).'" />'."\n";
    $form .= '<input type="hidden" name="item_number" value="'.$so->subid.'" />'."\n";
    $form .= '<input type="hidden" name="amount" value="'.$so->a3.'" />'."\n";
    $form .= '<input type="hidden" name="return" value="'.$return_url.'" />'."\n";
    $form .= '<input type="hidden" name="cancel_return" value="'.$return_url.'" />'."\n";
  //$form .= '<input type="hidden" name="invoice" value="invoicenumber" />'."\n";
    $form .= '<input type="hidden" name="no_shipping" value="1" />'."\n";
    $form .= '<input type="hidden" name="no_note" value="1" />'."\n";
    $form .= '<input type="hidden" name="quantity" value="1" />'."\n";
    $form .= '<input type="hidden" name="notify_url" value="'.$notify_url.'" />'."\n";
    $form .= '<input type="hidden" name="currency_code" value="'.$currency_code.'" />'."\n";
    $form .= '<input type="hidden" name="custom" value="'.$custom.'" />'."\n";
    $form .= '<input type="image" class="image" src="'.$button_url.'" name="submit" alt="Paypal" title="'.check_plain(t('Subscribe')).'"/>'."\n";
    $form .= '</div></form>'."\n";

    $output .= $form;
    return $output;
  }
?>

Change this too:

<?php
/**
 * Process a newly arrived subscription IPN message
 *
 * @param $ipn
 *   The IPN containing a subscription message.
 */
function lm_paypal_process_in_subscr($ipn) {
  _lm_paypal_subscriptions_ini();
  global $_lm_paypal_debug;

  if ($_lm_paypal_debug) {
    watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'in_subscr', NULL);
  }

  $link = l(t('view'), "admin/settings/lm_paypal/id/$ipn->id");

  if ($ipn->payment_status == 'Pending') {
    watchdog(
      LM_PAYPAL_SUBSCRIPTIONS,
      'Ignoring IPN with status: Pending. Check your PayPal account to see why it is pending. Note: pending_reason: %reason',
      array('%reason' => check_plain($ipn->pending_reason)),
      WATCHDOG_ERROR,
      $link);
    return;
  }

  if ($ipn->item_number == '' || !is_numeric($ipn->item_number) ||
      $ipn->custom == '' || !is_numeric($ipn->custom)) {
    watchdog(
      LM_PAYPAL_SUBSCRIPTIONS,
      'Subscription ipn invalid item_number or custom (item_number %item_number, custom %custom)',
      array('%item_number' => check_plain($ipn->item_number), '%custom' => check_plain($ipn->custom)),
      WATCHDOG_ERROR,
      $link);
    return;
  }

  $subid = $ipn->item_number;
  $custom = $ipn->custom;

  $uid = $custom & 0xFFFF;
  $other = ($custom >> 16) & 0xFFFF;
  $nid = $other; // This is usually true and doesn't hurt otherwise
  // Useful string to add to node related subscription related emails
  $node = t(" on node !nid", array("!nid" => $nid));

  // Look up the subscription
  $r = db_query("SELECT * FROM {lm_paypal_subscriptions} WHERE subid = %d AND status = 1", $subid);
  $so = db_fetch_object($r);
  if (! $so) {
    watchdog(
      LM_PAYPAL_SUBSCRIPTIONS,
      'IPN uses unknown or defunct subscription, ignored: %subid',
      array('%subid' => $subid),
      WATCHDOG_ERROR,
      $link);
    return;
  }

  // Is this uid valid?
  $users = db_query("SELECT * FROM {users} WHERE uid = %d", $uid);
  if (!db_result($users)) {
    watchdog(
      LM_PAYPAL_SUBSCRIPTIONS,
      'IPN subscribing unknown uid, ignored: %uid',
      array('%uid' => $uid),
      WATCHDOG_ERROR,
      $link);
    return;
  }

  //if ($ipn->txn_type == 'subscr_signup') {
  if ($ipn->txn_type == 'web_accept') {
    // Note: a signup doesn't have a transaction id!

    if (!_lm_paypal_subscriptions_validate($ipn, $so, $link)) {
      return;
    }

    // Is this an existing subscription (sometimes payments come before
    // signups so this is possible).
    $subs = db_query("SELECT * FROM {lm_paypal_subscribers} WHERE subscr_id = '%s'", $ipn->txn_id/*subscr_id*/);
    $ss = db_fetch_object($subs);

    if (!$ss) {
      // Try and track problem maybe caused by multiple subscr_signups
      watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'new subscr_signup subscr_id %sid', array('%sid' => $ipn->txn_id/*subscr_id*/));
      // Not already present.
      // Create an entry in the subscribers table.
      lm_paypal_add_subscriber($so->kind, $uid, $other, $subid, $ipn->txn_id/*subscr_id*/, LM_PAYPAL_SUBSCRIPTIONS_STATUS_SIGNEDUP);
    }
    else {
      // Try and track problem maybe caused by multiple subscr_signups
      watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'repeat subscr_signup subscr_id %sid', array('%sid' => $ipn->txn_id/*subscr_id*/));
      // It is already present

      switch ($ss->status) {
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_BLOCKED:
          watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'Attempt to signup to blocked subscription, ignored', NULL, WATCHDOG_ERROR, $link);
          return;

        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_DEAD:
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_CANCELLED:
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_EOT:
          watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'Attempt to signup to ended subscription, ignored %status', array('%status' => $ss->status), WATCHDOG_ERROR, $link);
          return;

        // Some users are reporting symptoms that suggest multiple
        // subscr_signup's are arriving. Ignore the duplicates here.
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_LIVE:
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_SIGNEDUP:
          watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'Signup received but subscription live or signedup, ignoring', NULL, WATCHDOG_ERROR, $link);
          return;

        // A payment arrived first. Now obey the signup
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_PAID:
          watchdog(LM_PAYPAL_SUBSCRIPTIONS, t('Signup received after payment, obeying it anyway'));
          break;
      }
    }

    // A signup alone is enough to go live. A payment IPN may not arrive at all
    // if the subscription amount is zero (usually a trial period)
    lm_paypal_subscriber_set_status($ipn->txn_id/*subscr_id*/, LM_PAYPAL_SUBSCRIPTIONS_STATUS_LIVE);

    if ($so->kind == 0) {
      lm_paypal_user_gain_role($uid, $so->rid);
    }
    else if ($so->kind == 2) {
      lm_paypal_user_gain_group($uid, $so->rid);
    }

    if ($so->send_admin_onsub && is_numeric($so->uid_admin)) {
      // Email admin to let them know of a new subscriber
      //  note: t() will be called inside lm_paypal_mail_user
      // Extra variables (in addition to the default ones provided)
      if ($so->kind == 0 || $so->kind == 2) {
        $variables = array('%Subscription' => $so->item_name, '%Node' => '');
      }
      else if ($so->kind == 1) {
        $variables = array('%Subscription' => $so->item_name, '%Node' => $node);
      }
      lm_paypal_mail_user(
        $so->uid_admin,
        $uid,
        LM_PAYPAL_SUBSCRIPTIONS_SEND_ADMIN_ONSUB_SUBJECT,
        LM_PAYPAL_SUBSCRIPTIONS_SEND_ADMIN_ONSUB_BODY,
        $variables);
    }

    if ($so->send_user_onsub) {
      // Email user to confirm a new subscriber
      //  note: t() will be called inside lm_paypal_mail_user
      // Extra variables (in addition to the default ones provided)
      if ($so->kind == 0 || $so->kind == 2) {
        $variables = array('%Subscription' => t($so->item_name), '%Node' => '');
      }
      else if ($so->kind == 1) {
        $variables = array('%Subscription' => $so->item_name, '%Node' => $node);
      }
      lm_paypal_mail_user($uid, $uid, $so->send_user_onsub_subject, $so->send_user_onsub_body, $variables);
    }

    return;
  }

  //else if ($ipn->txn_type == 'subscr_payment' && $ipn->payment_status == 'Completed') {
  if ($ipn->payment_status == 'Completed') {

    if (lm_paypal_already_processed($ipn->txn_id)) {
      watchdog(
        LM_PAYPAL_SUBSCRIPTIONS,
        'This transaction has already been processed, ignored: %id',
        array('%id' => check_plain($ipn->txn_id)),
        WATCHDOG_WARNING,
        $link);
      return;
    }

    // This should be an existing subscription (but sometimes payments come
    // before signups).
    $subs = db_query("SELECT * FROM {lm_paypal_subscribers} WHERE subscr_id = '%s'", $ipn->txn_id/*subscr_id*/);
    $ss = db_fetch_object($subs);

    if (!$ss) {
      // Not already present.
      // Create an entry in the subscribers table.
      lm_paypal_add_subscriber($so->kind, $uid, $other, $subid, $ipn->txn_id/*subscr_id*/, LM_PAYPAL_SUBSCRIPTIONS_STATUS_PAID);
    }
    else {
      // It is already present
      switch ($ss->status) {
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_BLOCKED:
          watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'Attempt to pay to blocked subscription, ignored', NULL, WATCHDOG_ERROR, $link);
          break;

        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_DEAD:
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_CANCELLED:
        case LM_PAYPAL_SUBSCRIPTIONS_STATUS_EOT:
          watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'Attempt to pay ended subscription, ignored %status', array('%status' => $ss->status), WATCHDOG_ERROR, $link);
          break;
      }
    }

    lm_paypal_mark_processed($ipn);

    return;
  }
  /*
  else if ($ipn->txn_type == 'subscr_cancel' || $ipn->txn_type == 'subscr_eot') {
    // Note: Cancel's dont get a transaction id!
    $end = check_plain(substr($ipn->txn_type, 7));
    if ($_lm_paypal_debug) {
      watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'User ending subscription (uid %uid, subid %subid, type %type)', array('%uid' => $uid, '%subid' => $subid, '%end' => $end));
    }

    // Check I know this subscr_id
    $subs = db_query("SELECT * FROM {lm_paypal_subscribers} WHERE subscr_id = '%s'", $ipn->subscr_id);
    $ss = db_fetch_object($subs);
    if (!$ss) {
      watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'Unable to fetch the subscriber object', NULL, WATCHDOG_ERROR, $link);
      // Maybe its a temporary error? Reject this and when PayPal retries
      // it might work!
      drupal_set_header('HTTP/1.0 404 Not Found');
      return;
    }

    switch ($ss->status) {
      case LM_PAYPAL_SUBSCRIPTIONS_STATUS_BLOCKED:
        watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'Attempt to end to blocked subscription, ignored', NULL, WATCHDOG_ERROR, $link);
        return;

      case LM_PAYPAL_SUBSCRIPTIONS_STATUS_DEAD:
      case LM_PAYPAL_SUBSCRIPTIONS_STATUS_CANCELLED:
      case LM_PAYPAL_SUBSCRIPTIONS_STATUS_EOT:
        watchdog(LM_PAYPAL_SUBSCRIPTIONS, 'Attempt to end ended subscription, ignored %status', array('%status' => $ss->status), WATCHDOG_ERROR, $link);
        return;
    }

    // Mark the subscription ended
    $status = ($end == 'eot' ? LM_PAYPAL_SUBSCRIPTIONS_STATUS_EOT : LM_PAYPAL_SUBSCRIPTIONS_STATUS_CANCEL);
    lm_paypal_subscriber_set_status($ipn->subscr_id, $status);

    if ($so->kind == 0) {
      lm_paypal_user_loose_role($uid, $so->rid);
    }
    else if ($so->kind == 2) {
      lm_paypal_user_loose_group($uid, $so->rid);
    }

    if ($so->send_admin_onend && is_numeric($so->uid_admin)) {
      // Email admin to let them know of an eot or cancellation
      //  note: t() will be called inside lm_paypal_mail_user
      // Extra variables (in addition to the default ones provided)
      if ($so->kind == 0 || $so->kind == 2) {
        $variables = array('%Subscription' => $so->item_name, '%End' => $end, '%Node' => '');
      }
      else if ($so->kind == 1) {
        $variables = array('%Subscription' => $so->item_name, '%End' => $end, '%Node' => $node);
      }
      lm_paypal_mail_user(
        $so->uid_admin,
        $uid,
        LM_PAYPAL_SUBSCRIPTIONS_SEND_ADMIN_ONEND_SUBJECT,
        LM_PAYPAL_SUBSCRIPTIONS_SEND_ADMIN_ONEND_BODY,
        $variables);
    }

    if ($so->send_user_onend) {
      // Email user to confirm an eot or cancellation
      //  note: t() will be called inside lm_paypal_mail_user
      // Extra variables (in addition to the default ones provided)
      if ($so->kind == 0 || $so->kind == 2) {
        $variables = array('%Subscription' => $so->item_name, '%End' => $end, '%Node' => '');
      }
      else if ($so->kind == 1) {
        $variables = array('%Subscription' => $so->item_name, '%End' => $end, '%Node' => $node);
      }
      lm_paypal_mail_user($uid, $uid, $so->send_user_onend_subject, $so->send_user_onend_body, $variables);
    }

    return;
  }
  */

  watchdog(
    LM_PAYPAL_SUBSCRIPTIONS,
    'Ignoring invalid, unrecognised, or pending subscription ipn type: %type',
    array('%type' => check_plain($ipn->txn_type)),
    WATCHDOG_ERROR,
    $link);
  return;
}
?>

It might not be enough but try it.

wbzial’s picture

Thanks i'm on it!!!

pjd’s picture

Hi

I had the same problem. ("subscr_eot" sent just after register)

A another solution to correct quickly and disable fully the request to end the subscription (you will have to build the cron to delete the subscription...)

I only comment this line in the alpha version of the module in the lm_paypal_subscriptions.module script (modules/lm_paypal folder) :

Search for the first "subscr_eot" and the line:

else if ($ipn->txn_type == 'subscr_cancel' || $ipn->txn_type == 'subscr_eot') {

After this line search for this new line and comment it :

//lm_paypal_subscriber_set_status($ipn->subscr_id, $status);

and

if ($so->kind == 0) {
// INTERVENTION ICI : PJD : 30 DECEMBRE - AJOUT des lignes loose_role et loose_group en commentaire:
//lm_paypal_user_loose_role($uid, $so->rid);
}
else if ($so->kind == 2) {
//lm_paypal_user_loose_group($uid, $so->rid);
}

Becarefull to comment too the email sent to the user !

// ON ENLEVE AUSSI L'ENVOI D EMAIL A L UTILISATEUR EN FIN D ABONNEMENT
// lm_paypal_mail_user($uid, $uid, $so->send_user_onend_subject, $so->send_user_onend_body, $variables);

anrikun’s picture

Hi PDJ,

You fix should work too.
The difference with mine is that you still handle non recurring subscriptions as subscriptions whereas I handle them as one-click payments.
Why ?
Because subscriptions force users to create a Paypal account even if they want to pay directly using their credit cards.
Many users don't like having to create a Paypal account.
That's why I have switched to one-click payment.

tahiticlic’s picture

Hi there,

to complete #6 comment, maybe a test on the normal duration of a subscription would do the trick. Around lines 2091-2100 of subscription module :

<?php
    // MODIF DE CORRECTION DE EOT
    $real_eot=false;
    if (time()>$ss->started+lm_paypal_subscription_days($so)*60*60*24) $real_eot=true;
    if ($real_eot) lm_paypal_subscriber_set_status($ipn->subscr_id, $status); 
    if ($so->kind == 0) {
      if ($real_eot) lm_paypal_user_loose_role($uid, $so->rid);
    }
    else if ($so->kind == 2) {
      if ($real_eot) lm_paypal_user_loose_group($uid, $so->rid);
    }
    // FIN MODIF DE CORRECTION DE EOT
?>

and the last line, ~2130 :

<?php
      if ($real_eot) lm_paypal_mail_user($uid, $uid, $so->send_user_onend_subject, $so->send_user_onend_body, $variables);// MODIF DE CORRECTION DE EOT
?>
SomebodySysop’s picture

@anrikun and @pjd

These sound like good solutions. Could you attach patches?

@cfab

This code looks like it ends the subscription. But, in what function does it go? hook_cron? Could you also supply a patch?

Thanks!

anrikun’s picture

I think there's so much to rewrite that a patch might not be easy to make, but I will try when I have more time.

tahiticlic’s picture

Nope it doesn't end the subscription, it is a hack to avoid it since it is the problem here... As I wrote, it is the same of pjd's hack, but it introduces a test on the subscription duration (I didn't check it but the idea is here).
I don't know how to make patch. The lines to change are in lm_paypal_process_in_subscr function, near the end and after "Mark the subscription ended" comment, in lm_paypal_subscriptions.module

I don't understand #8 comment because having a Paypal account is not mandatory I think (is it?). Nevertheless, I agree that one-click payment is surely a better solution to deal with non reccurent payment.

anrikun’s picture

Hi cfab!
Yes having a Paypal account is mandatory when using subscriptions (so that Paypal can rebill each cycle).
The (undocumented) problem with non recurrent subscriptions is that at the same time:
- Paypal still asks to create an account although there won't be any rebill => This way, Paypal treats a non recurrent payment like a recurrent payment.
- Paypal sends eot immediatly after payment => This way, Paypal treats a recurrent payment differently from a recurrent payment
So Paypal does not act consistently when dealing with non recurrent payments.

SomebodySysop’s picture

Just for the record, I used the solution outlined in #6. In the case of a one time subscription, I still get the email from Paypal indicating that the profile is cancelled:

You successfully canceled the following PayPal Recurring Payment profile. We will no longer bill the buyer.

But, the subscription itself is NOT cancelled, so no more angry emails from subscribers.

It would be nice if there could be a way figured out how to handle this on the lm_paypal side.

tanoshimi’s picture

I've only just tried using lm_paypal, but it appears that I might have got stuck on the same problem as lots of other users, namely:

- I want to create the ability for users to make a 'one-time' payment via PayPal that doesn't involve them having a paypal account, and having done so I want to add that user to a role (so that they can access particular content).
- Ubercart and e-commerce are way too over the top for this (although could handle the task)
- Various other modules that claim to do similar things havent' been updated to D6
- lm_paypal seems to have two components each of which do half of what I want - the 'donations' allows a one-off payment, and doesn't require a paypal account, but I have no easy way of assigning a role to those users that have made the payment. The 'subscriptions' has a lot more options, but because of the way paypal defines their subscription model, has to be recurring and also has to have a paypal account, neither of which I want.

So, is it worth taking the efforts of people in this thread and others to create a new plugin for lm_paypal that deals with one-off payments, or should it be that the 'donations' module is made more generic? Is there any difference in the paypal API between handling 'payments' and handling 'donations'?

carlwohlforth’s picture

I just got bitten by this one. Drupal 6.13, lm_paypal 6x-1.0.

Maybe a note can be added to the project page so people can find out ahead of time that non-recurring subscriptions don't currently work?

anrikun’s picture

@tanoshimi
one-click and donate payments are the same in Paypal.

NickTech’s picture

Have the exact same problem here. Subscribing.

kerauno’s picture

This has been fixed in the 6.x-2.x dev version if you have time to test.

arturoramos’s picture

In response to anrikun (#4) comment:

Your solution basically overrides all web_accept payment handlers and sends them all to the subscribe module. So if you are using lm_paypal for any other purposes on the site, those will be broken...

I have hacked mine by moving your first edit to the end of the function lm_paypal_process_in_web_accept function... assuming that subscriptions have an item number of 1 and all other payment handlers have been assigned item numbers other than 1:

<?php
  else if (!is_numeric($item_number) || intval($item_number) != $item_number || $item_number < 0) {
    watchdog(
      LM_PAYPAL, 
      t('Invalid item_number, ignoring IPN: %item_number', array('%item_number' => check_plain($item_number))),
      WATCHDOG_WARNING,
      $link);
    return;
  }
// Begin change here
  if ($item_number == 1){
    return lm_paypal_process_in_subscr($ipn); 
  } else {
    return lm_paypal_web_accept_invoke($ipn, $link, $uid, $other, $item_number);
  }
// End change here
/?>
anrikun’s picture

Nice contribution arturoramos.
My solution is an ugly hack that works only for the purpose it was made for.
What would be great now would be to repack all the patches of this thread into the dev version.
But according to #18 it might be already in it.
I haven't had time to test it so far...

chic_geek’s picture

I tried to update to 6.x-2.x dev. The install went smoothly, and I like the updates... the only problem is that it doesn't seem to recognize when a user is logged in, because when I'm logged in and go to the subscription page, it prompts me to create an account or log in in order to subscribe.

Any thoughts?

kerauno’s picture

hmmm. Haven't experienced this issue. I would first verify all permissions and make sure you are an allowed to access all the modules. Then if you continue to have a problem, try doing a complete uninstall and re-installing?

Thanks.

catya’s picture

Issue summary: View changes

I'm running into this same problem in the 7.x version - has anyone looked at it there?