/**
  * Return the Spreedly url to manage the subscription or the
  * PayPal url to cancel the subscription. 
  * If the visitor is not logged in, return false.
  * You can pass in text for the link and a custom return URL
  * 
  * $attr = array(
  *   text => 'The link text for the subscription management link'
  *   return => 'Customize the return url for the spreedly page'
  * )
  * 
  * @return string Spreedly subscription management URL
  */
 public function accountInfo($attrs)
 {
     if (Cart66Common::isLoggedIn()) {
         $data = array();
         $account = new Cart66Account(Cart66Session::get('Cart66AccountId'));
         if (isset($_POST['cart66-task']) && $_POST['cart66-task'] == 'account-update') {
             $login = $_POST['login'];
             if ($login['password'] == $login['password2']) {
                 $account->firstName = $login['first_name'];
                 $account->lastName = $login['last_name'];
                 $account->email = $login['email'];
                 $account->password = empty($login['password']) ? $account->password : md5($login['password']);
                 $account->username = $login['username'];
                 $errors = $account->validate();
                 if (count($errors) == 0) {
                     $account->save();
                     if ($account->isSpreedlyAccount()) {
                         SpreedlySubscriber::updateRemoteAccount($account->id, array('email' => $account->email));
                     }
                     $data['message'] = 'Your account is updated';
                     Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Account was updated: " . print_r($account->getData, true));
                 } else {
                     $data['errors'] = $account->getErrors();
                     Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Account validation failed: " . print_r($data['errors'], true));
                 }
             } else {
                 $data['errors'] = "Account not updated. The passwords entered did not match";
             }
         }
         $data['account'] = $account;
         $data['url'] = false;
         if ($account->isSpreedlyAccount()) {
             $accountSub = $account->getCurrentAccountSubscription();
             $text = isset($attrs['text']) ? $attrs['text'] : 'Manage your subscription.';
             $returnUrl = isset($attrs['return']) ? $attrs['return'] : null;
             $url = $accountSub->getSubscriptionManagementLink($returnUrl);
             $data['url'] = $url;
             $data['text'] = $text;
         }
         $view = Cart66Common::getView('views/account-info.php', $data);
         return $view;
     } else {
         Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Trying to view account subscription short code but account holder is not logged into Cart66.");
     }
 }