11
EMSguy
Re: simple hack (4 years in the works) paypal subscription
  • 2005/5/24 13:53

  • EMSguy

  • Just popping in

  • Posts: 86

  • Since: 2004/9/28


Now this will kill opensource:

from:http://www.gnu.org/licenses/gpl-faq.html#GPLModuleLicense

Quote:
A company is running a modified version of a GPL'ed program on a web site. Does the GPL say they must release their modified sources?

The GPL permits anyone to make a modified version and use it without ever distributing it to others. What this company is doing is a special case of that. Therefore, the company does not have to release the modified sources.

It is essential for people to have the freedom to make modifications and use them privately, without ever publishing those modifications. However, putting the program on a server machine for the public to talk to is hardly "private" use, so it would be legitimate to require release of the source code in that special case. We are thinking about doing something like this in GPL version 3, but we don't have precise wording in mind yet.


Can you beleive this? You pay to have a rather expensive module made, then guess what, you are forced to release it, to whoever ask's for it! Without compensation, this reminds me of something.....hmmmm....oh yea robbery!

12
McNaz
Re: simple hack (4 years in the works) paypal subscription
  • 2005/5/24 14:06

  • McNaz

  • Just can't stay away

  • Posts: 574

  • Since: 2003/4/21


I might be wrong on this one but I am under the impression if you do develop a module for XOOPS you can withhold releasing it. What you can’t do is release it in exchange for payment (or sea shells) or whatever that restricts the further distribution of that code once it has been released.

13
Mithrandir
Re: simple hack (4 years in the works) paypal subscription

Certainly. Noone can force you to release it - but IF you do (even if you charge for it) you cannot put any restrictions on the buyer's use or distribution of it. This means that you can get the initial bucks off the buyer, but you cannot claim piracy if he is putting it up for free on his website.

You can choose not to release it and keep it to yourself.

14
DonXoop
Re: simple hack (4 years in the works) paypal subscription

When I read the GNU and compare it to even half of nearly any commercial license I choose GNU. It isn't just about the money.

Anyone if Free to charge Money for code that by license must be allowed to then be free if one chooses. If you're good enough and lucky enough to get your 1,000s of dollars back by selling code that others later get for free then all should be good. If selling code is the only means to riches then GNU is not the right direction. Many companies survive quite well since the free code is their loss leader to other business.

There is also a community aspect to this kind of software that many will never understand. I don't get as excited about participating in a community for commercial products. So all is fair.

The politics and public bickering within Open Source projects is never ending but no less volatile than what goes on behind closed doors of commercial projects. Keeping it behind closed doors is a lot more expensive. I'm more bothered by paying for products that has more investment in the marketing, secrecy, hype, and restrictions than in the code itself.

The Open Source community is doing well and my computer is much healthier running it for years now.

There is all manner of commercial CMS products out there. My heart isn't into researching who and what they are but for a price I could do the leg work.... Otherwise why do people that don't like the structure insist on bitching about it? Don't use it. Don't try to change it. There are many many products that I don't like or don't like the license, so I stay away from them.

15
davidl2
Re: simple hack (4 years in the works) paypal subscription
  • 2005/5/24 14:20

  • davidl2

  • XOOPS is my life!

  • Posts: 4843

  • Since: 2003/5/26


I don't mind contributing for development work on projects I - and others - require.

I don't mind if developers of a free module may decide to offer a premium installation and support service to help fund development costs. Jinzora is an example of this. Dadamail is another.

There are ways to make money - and to keep the spirit of GNU alive.

16
artigas
Re: simple hack (4 years in the works) paypal subscription
  • 2005/5/24 16:54

  • artigas

  • Quite a regular

  • Posts: 208

  • Since: 2004/12/21


Greetings Mithrandir -

I have a sugestion. Create a new license type for both XOOPS and the upcomming XOOPSPHERE. A license type that supports both Open Source and Commercial Development.

There will be no need to interpret or fight about what GPL means anymore.

You can clearly state the requirements for the the open source side and the commercial side are. You can give examples of both. You can decide what copyright text do display on either type of development. You can have the organization that you just created discuss, arbitrate and decide what falls under what when questions come up about different marketing, business, and payment models.

You will then have the best of both worlds and talent from both sides of the fence working on Open Source for the reputation and experience, and Commercial Developers for the money.

And there is nothing to prevent an un-successfull commercial module becomming a successfull open source module if the author wishes it.

This will keep the infrastructure of XOOPS and XOOPSPHERE with their core modules open source and will allow development of open source and close source modules.

Everybody wins...

Again, this is just a sugestion.

17
davidl2
Re: simple hack (4 years in the works) paypal subscription
  • 2005/5/24 16:56

  • davidl2

  • XOOPS is my life!

  • Posts: 4843

  • Since: 2003/5/26


It is a good point that a brand new XOOPS version does give the opportunity for this.

18
pod
Re: simple hack (4 years in the works) paypal subscription
  • 2005/5/24 17:24

  • pod

  • Quite a regular

  • Posts: 301

  • Since: 2003/4/19


Not to get back to the original topic or anything, but I did manage a quick & dirty workaround to make xDonations process subscriptions... although I know that someone more php savvy than I could look at what PayPal gives us to work with & turn it into a decent module, if anyone were interested in glancing at the code & tables, below.

<?php




/////////////////////////////////////////////////
/////////////Begin Script below./////////////////
/////////////////////////////////////////////////

// read the post from PayPal system and add 'cmd'
$req 'cmd=_notify-validate';
foreach (
$_POST as $key => $value) {
$value urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0rn";
$header .= "Content-Type: application/x-www-form-urlencodedrn";
$header .= "Content-Length: " strlen($req) . "rnrn";
$fp fsockopen ('www.paypal.com'80$errno$errstr30);


// assign posted variables to local variables
$item_name $_POST['item_name'];
$business $_POST['business'];
$item_number $_POST['item_number'];
$payment_status $_POST['payment_status'];
$mc_gross $_POST['mc_gross'];
$payment_currency $_POST['mc_currency'];
$txn_id $_POST['txn_id'];
$receiver_email $_POST['receiver_email'];
$receiver_id $_POST['receiver_id'];
$quantity $_POST['quantity'];
$num_cart_items $_POST['num_cart_items'];
$payment_date $_POST['payment_date'];
$first_name $_POST['first_name'];
$last_name $_POST['last_name'];
$payment_type $_POST['payment_type'];
$payment_status $_POST['payment_status'];
$payment_gross $_POST['payment_gross'];
$payment_fee $_POST['payment_fee'];
$settle_amount $_POST['settle_amount'];
$memo $_POST['memo'];
$payer_email $_POST['payer_email'];
$txn_type $_POST['txn_type'];
$payer_status $_POST['payer_status'];
$address_street $_POST['address_street'];
$address_city $_POST['address_city'];
$address_state $_POST['address_state'];
$address_zip $_POST['address_zip'];
$address_country $_POST['address_country'];
$address_status $_POST['address_status'];
$item_number $_POST['item_number'];
$tax $_POST['tax'];
$option_name1 $_POST['option_name1'];
$option_selection1 $_POST['option_selection1'];
$option_name2 $_POST['option_name2'];
$option_selection2 $_POST['option_selection2'];
$for_auction $_POST['for_auction'];
$invoice $_POST['invoice'];
$custom $_POST['custom'];
$notify_version $_POST['notify_version'];
$verify_sign $_POST['verify_sign'];
$payer_business_name $_POST['payer_business_name'];
$payer_id =$_POST['payer_id'];
$mc_currency $_POST['mc_currency'];
$mc_fee $_POST['mc_fee'];
$exchange_rate $_POST['exchange_rate'];
$settle_currency  $_POST['settle_currency'];
$parent_txn_id  $_POST['parent_txn_id'];

// subscription specific vars

$subscr_id $_POST['subscr_id'];
$subscr_date $_POST['subscr_date'];
$subscr_effective  $_POST['subscr_effective'];
$period1 $_POST['period1'];
$period2 $_POST['period2'];
$period3 $_POST['period3'];
$amount1 $_POST['amount1'];
$amount2 $_POST['amount2'];
$amount3 $_POST['amount3'];
$mc_amount1 $_POST['mc_amount1'];
$mc_amount2 $_POST['mc_amount2'];
$mc_amount3 $_POST['mcamount3'];
$recurring $_POST['recurring'];
$reattempt $_POST['reattempt'];
$retry_at $_POST['retry_at'];
$recur_times $_POST['recur_times'];
$username $_POST['username'];
$password $_POST['password'];

//auction specific vars

$for_auction $POST['for_auction'];
$auction_closing_date  $POST['auction_closing_date'];
$auction_multi_item  $POST['auction_multi_item'];
$auction_buyer_id  $POST['auction_buyer_id '];



if (!
$fp) {
// HTTP ERROR
} else {
fputs ($fp$header $req);
while (!
feof($fp)) {
$res fgets ($fp1024);
if (
strcmp ($res"VERIFIED") == 0) {

$notify_email =  "service@mysite.com";         //email address to which debug emails are sent to

$DB_Server "localhost"//your MySQL Server
$DB_Username "user_name"//your MySQL User Name
$DB_Password "*****"//your MySQL Password
$DB_DBName "database_name"//your MySQL Database Name



//create MySQL connection
$Connect = @mysql_connect($DB_Server$DB_Username$DB_Password)
or die(
"Couldn't connect to MySQL:<br>" mysql_error() . "<br>" mysql_errno());


//select database
$Db = @mysql_select_db($DB_DBName$Connect)
or die(
"Couldn't select database:<br>" mysql_error(). "<br>" mysql_errno());


$fecha date("m")."/".date("d")."/".date("Y");
$fecha date("Y").date("m").date("d");

//check if transaction ID has been processed before
$checkquery "select txnid from paypal_payment_info where txnid='".$txn_id."'";
$sihay = @mysql_query($checkquery);
$nm mysql_num_rows($sihay);
if (
$nm == 0){

//execute query



    
if ($txn_type == "cart"){
    
$strQuery "insert into paypal_payment_info(paymentstatus,buyer_email,firstname,lastname,street,city,state,zipcode,country,mc_gross,mc_fee,memo,paymenttype,paymentdate,txnid,pendingreason,reasoncode,tax,datecreation) values ('".$payment_status."','".$payer_email."','".$first_name."','".$last_name."','".$address_street."','".$address_city."','".$address_state."','".$address_zip."','".$address_country."','".$mc_gross."','".$mc_fee."','".$memo."','".$payment_type."','".$payment_date."','".$txn_id."','".$pending_reason."','".$reason_code."','".$tax."','".$fecha."')";

     
$result = @mysql_query($strQuery);
     for (
$i 1$i <= $num_cart_items$i++) {
         
$itemname "item_name".$i;
         
$itemnumber "item_number".$i;
         
$on0 "option_name1_".$i;
         
$os0 "option_selection1_".$i;
         
$on1 "option_name2_".$i;
         
$os1 "option_selection2_".$i;
         
$quantity "quantity".$i;

         
$struery "insert into paypal_cart_info(txnid,itemnumber,itemname,os0,on0,os1,on1,quantity,invoice,custom) values ('".$txn_id."','".$_POST[$itemnumber]."','".$_POST[$itemname]."','".$_POST[$on0]."','".$_POST[$os0]."','".$_POST[$on1]."','".$_POST[$os1]."','".$_POST[$quantity]."','".$invoice."','".$custom."')";
         
$result = @mysql_query($struery);

     }
    }



    else{
     
$strQuery "insert into paypal_payment_info(paymentstatus,buyer_email,firstname,lastname,street,city,state,zipcode,country,mc_gross,mc_fee,itemnumber,itemname,os0,on0,os1,on1,quantity,memo,paymenttype,paymentdate,txnid,pendingreason,reasoncode,tax,datecreation) values ('".$payment_status."','".$payer_email."','".$first_name."','".$last_name."','".$address_street."','".$address_city."','".$address_state."','".$address_zip."','".$address_country."','".$mc_gross."','".$mc_fee."','".$item_number."','".$item_name."','".$option_name1."','".$option_selection1."','".$option_name2."','".$option_selection2."','".$quantity."','".$memo."','".$payment_type."','".$payment_date."','".$txn_id."','".$pending_reason."','".$reason_code."','".$tax."','".$fecha."')";
     
$result = @mysql_query("insert into paypal_payment_info(paymentstatus,email,firstname,lastname,street,city,state,zipcode,country,mc_gross,mc_fee,itemnumber,itemname,os0,on0,os1,on1,quantity,memo,paymenttype,paymentdate,txnid,pendingreason,reasoncode,tax,datecreation) values ('".$payment_status."','".$payer_email."','".$first_name."','".$last_name."','".$address_street."','".$address_city."','".$address_state."','".$address_zip."','".$address_country."','".$mc_gross."','".$mc_fee."','".$item_number."','".$item_name."','".$option_name1."','".$option_selection1."','".$option_name2."','".$option_selection2."','".$quantity."','".$memo."','".$payment_type."','".$payment_date."','".$txn_id."','".$pending_reason."','".$reason_code."','".$tax."','".$fecha."')");
    }


    
// send an email in any case
 
echo "Verified";
     
mail($notify_email"VERIFIED IPN""$resn $reqn $strQueryn $strueryn  $strQuery2");
}
else {
// send an email
mail($notify_email"VERIFIED DUPLICATED TRANSACTION""$resn $req n $strQueryn $strueryn  $strQuery2");
}

    
//subscription handling branch
    
if ( $txn_type == "subscr_signup"  ||  $txn_type == "subscr_payment"  ) {

      
// insert subscriber payment info into paypal_payment_info table
      
$strQuery "insert into paypal_payment_info(paymentstatus,buyer_email,firstname,lastname,street,city,state,zipcode,country,mc_gross,mc_fee,memo,paymenttype,paymentdate,txnid,pendingreason,reasoncode,tax,datecreation) values ('".$payment_status."','".$payer_email."','".$first_name."','".$last_name."','".$address_street."','".$address_city."','".$address_state."','".$address_zip."','".$address_country."','".$mc_gross."','".$mc_fee."','".$memo."','".$payment_type."','".$payment_date."','".$txn_id."','".$pending_reason."','".$reason_code."','".$tax."','".$fecha."')";
      
$result = @mysql_query($strQuery);


         
// insert subscriber info into paypal_subscription_info table
        
$strQuery2 "insert into paypal_subscription_info(subscr_id , sub_event, subscr_date ,subscr_effective,period1,period2, period3, amount1 ,amount2 ,amount3,  mc_amount1,  mc_amount2,  mc_amount3, recurring, reattempt,retry_at, recur_times, username ,password, payment_txn_id, subscriber_emailaddress, datecreation) values ('".$subscr_id."', '".$txn_type."','".$subscr_date."','".$subscr_effective."','".$period1."','".$period2."','".$period3."','".$amount1."','".$amount2."','".$amount3."','".$mc_amount1."','".$$mc_amount2."','".$$mc_amount3."','".$recurring."','".$reattempt."','".$retry_at."','".$recur_times."','".$username."','".$password."', '".$txn_id."','".$payer_email."','".$fecha."')";
        
$result = @mysql_query($strQuery2);


             
mail($notify_email"VERIFIED IPN""$resn $reqn $strQueryn $strueryn  $strQuery2");

    }
}

// if the IPN POST was 'INVALID'...do this


else if (strcmp ($res"INVALID") == 0) {
// log for manual investigation

mail($notify_email"INVALID IPN""$resn $req");
}
}
fclose ($fp);
}
?>



------------------TABLE DUMP-----------------



# Table structure for table `paypal_cart_info`     #

CREATE TABLE `paypal_cart_info` (
  `txnid` varchar(30) NOT NULL default '',
  `itemname` varchar(255) NOT NULL default '',
  `itemnumber` varchar(50) default NULL,
  `os0` varchar(20) default NULL,
  `on0` varchar(50) default NULL,
  `os1` varchar(20) default NULL,
  `on1` varchar(50) default NULL,
  `quantity` char(3) NOT NULL default '',
  `invoice` varchar(255) NOT NULL default '',
  `custom` varchar(255) NOT NULL default ''
) TYPE=MyISAM;



# Table structure for table `paypal_subscription_info` #


CREATE TABLE `paypal_subscription_info` (
  `subscr_id` varchar(255) NOT NULL default '',
  `sub_event` varchar(50) NOT NULL default '',
  `subscr_date` varchar(255) NOT NULL default '',
  `subscr_effective` varchar(255) NOT NULL default '',
  `period1` varchar(255) NOT NULL default '',
  `period2` varchar(255) NOT NULL default '',
  `period3` varchar(255) NOT NULL default '',
  `amount1` varchar(255) NOT NULL default '',
  `amount2` varchar(255) NOT NULL default '',
  `amount3` varchar(255) NOT NULL default '',
  `mc_amount1` varchar(255) NOT NULL default '',
  `mc_amount2` varchar(255) NOT NULL default '',
  `mc_amount3` varchar(255) NOT NULL default '',
  `recurring` varchar(255) NOT NULL default '',
  `reattempt` varchar(255) NOT NULL default '',
  `retry_at` varchar(255) NOT NULL default '',
  `recur_times` varchar(255) NOT NULL default '',
  `username` varchar(255) NOT NULL default '',
  `password` varchar(255) default NULL,
  `payment_txn_id` varchar(50) NOT NULL default '',
  `subscriber_emailaddress` varchar(255) NOT NULL default '',
  `datecreation` date NOT NULL default '0000-00-00'
) TYPE=MyISAM;






# Table structure for table `paypal_payment_info` #


CREATE TABLE `paypal_payment_info` (
  `firstname` varchar(100) NOT NULL default '',
  `lastname` varchar(100) NOT NULL default '',
  `buyer_email` varchar(100) NOT NULL default '',
  `street` varchar(100) NOT NULL default '',
  `city` varchar(50) NOT NULL default '',
  `state` char(3) NOT NULL default '',
  `zipcode` varchar(11) NOT NULL default '',
  `memo` varchar(255) default NULL,
  `itemname` varchar(255) default NULL,
  `itemnumber` varchar(50) default NULL,
  `os0` varchar(20) default NULL,
  `on0` varchar(50) default NULL,
  `os1` varchar(20) default NULL,
  `on1` varchar(50) default NULL,
  `quantity` char(3) default NULL,
  `paymentdate` varchar(50) NOT NULL default '',
  `paymenttype` varchar(10) NOT NULL default '',
  `txnid` varchar(30) NOT NULL default '',
  `mc_gross` varchar(6) NOT NULL default '',
  `mc_fee` varchar(5) NOT NULL default '',
  `paymentstatus` varchar(15) NOT NULL default '',
  `pendingreason` varchar(10) default NULL,
  `txntype` varchar(10) NOT NULL default '',
  `tax` varchar(10) default NULL,
  `mc_currency` varchar(5) NOT NULL default '',
  `reasoncode` varchar(20) NOT NULL default '',
  `custom` varchar(255) NOT NULL default '',
  `country` varchar(20) NOT NULL default '',
  `datecreation` date NOT NULL default '0000-00-00'
) TYPE=MyISAM;

19
artigas
Re: simple hack (4 years in the works) paypal subscription
  • 2005/5/24 17:31

  • artigas

  • Quite a regular

  • Posts: 208

  • Since: 2004/12/21


Greetings davidl2 -

And we do have a new version of XOOPS comming out real soon. So if the community chose to, it could be released under a new license model.

Maybe a new thread should be started so the community could weigh in on this subject.

20
Mithrandir
Re: simple hack (4 years in the works) paypal subscription

Quote:
Everybody wins...

Provided that the open source community "wins" by others making closed source modules - and that we actually want that.

I don't think that closed source solves anything. On the contrary, developers will have less code to learn from in order to become better developers. We will also send mixed signals that XOOPS is free... to an extent.
I don't think that closed source modules will make a lot of people throw themselves over XOOPS - at least, I don't see how XOOPS will benefit from that.

XOOPS is a system for managing websites and managing websites is all about customising it to suit your needs. By giving developers the option of not allowing customisation of their software, we also take away the reason for making XOOPS altogether.

That is just my opinion, I can't say which of us is right, but only what I feel is right.

Login

Who's Online

224 user(s) are online (167 user(s) are browsing Support Forums)


Members: 0


Guests: 224


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Apr 30
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits