Thorough review of the BuyCourses plugin - refs #5464
	
		
	
				
					
				
			@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/* For licensing terms, see /license.txt */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define('TABLE_BUY_COURSE', 'plugin_buy_course'); | 
				
			||||||
 | 
					define('TABLE_BUY_COURSE_COUNTRY', 'plugin_buy_course_country'); | 
				
			||||||
 | 
					define('TABLE_BUY_COURSE_PAYPAL', 'plugin_buy_course_paypal'); | 
				
			||||||
 | 
					define('TABLE_BUY_COURSE_TRANSFERENCE', 'plugin_buy_course_transference'); | 
				
			||||||
 | 
					define('TABLE_BUY_COURSE_TEMPORAL', 'plugin_buy_course_temporal'); | 
				
			||||||
 | 
					define('TABLE_BUY_COURSE_SALE', 'plugin_buy_course_sale'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once __DIR__ . '/../../main/inc/global.inc.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'plugin.class.php'; | 
				
			||||||
 | 
					require_once  api_get_path(PLUGIN_PATH) . 'buy_courses/src/buy_course_plugin.class.php'; | 
				
			||||||
@ -0,0 +1,343 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Created by PhpStorm. | 
				
			||||||
 | 
					 * User: fgonzales | 
				
			||||||
 | 
					 * Date: 21/05/14 | 
				
			||||||
 | 
					 * Time: 12:19 PM | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					$objPlugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$table = Database::get_main_table(TABLE_BUY_COURSE); | 
				
			||||||
 | 
					$sql = "CREATE TABLE IF NOT EXISTS $table ( | 
				
			||||||
 | 
					    id INT unsigned NOT NULL auto_increment PRIMARY KEY, | 
				
			||||||
 | 
					    id_course INT unsigned NOT NULL DEFAULT '0', | 
				
			||||||
 | 
					    code VARCHAR(40), | 
				
			||||||
 | 
					    title VARCHAR(250), | 
				
			||||||
 | 
					    visible int(1), | 
				
			||||||
 | 
					    price FLOAT(11,2) NOT NULL DEFAULT '0', | 
				
			||||||
 | 
					    sync int(1))"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); | 
				
			||||||
 | 
					$sql = "SELECT id, code, title FROM $tableCourse"; | 
				
			||||||
 | 
					$res = Database::query($sql); | 
				
			||||||
 | 
					while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					    $presql = "INSERT INTO $table (id_course, code, title, visible) VALUES ('" . $row['id'] . "','" . $row['code'] . "','" . $row['title'] . "','NO')"; | 
				
			||||||
 | 
					    Database::query($presql); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$table = Database::get_main_table(TABLE_BUY_COURSE_COUNTRY); | 
				
			||||||
 | 
					$sql = "CREATE TABLE IF NOT EXISTS $table ( | 
				
			||||||
 | 
					    `id_country` int(5) NOT NULL AUTO_INCREMENT, | 
				
			||||||
 | 
					    `country_code` char(2) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    `country_name` varchar(45) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    `currency_code` char(3) DEFAULT NULL, | 
				
			||||||
 | 
					    `iso_alpha3` char(3) DEFAULT NULL, | 
				
			||||||
 | 
					    `status` int(1) DEFAULT '0', | 
				
			||||||
 | 
					    PRIMARY KEY (`id_country`) | 
				
			||||||
 | 
					    ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$sql = "CREATE UNIQUE INDEX index_country ON $table (`country_code`)"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$sql = "INSERT INTO $table (`country_code`, `country_name`, `currency_code`, `iso_alpha3`) VALUES | 
				
			||||||
 | 
						('AD', 'Andorra', 'EUR', 'AND'), | 
				
			||||||
 | 
						('AE', 'United Arab Emirates', 'AED', 'ARE'), | 
				
			||||||
 | 
						('AF', 'Afghanistan', 'AFN', 'AFG'), | 
				
			||||||
 | 
						('AG', 'Antigua and Barbuda', 'XCD', 'ATG'), | 
				
			||||||
 | 
						('AI', 'Anguilla', 'XCD', 'AIA'), | 
				
			||||||
 | 
						('AL', 'Albania', 'ALL', 'ALB'), | 
				
			||||||
 | 
						('AM', 'Armenia', 'AMD', 'ARM'), | 
				
			||||||
 | 
						('AO', 'Angola', 'AOA', 'AGO'), | 
				
			||||||
 | 
						('AR', 'Argentina', 'ARS', 'ARG'), | 
				
			||||||
 | 
						('AS', 'American Samoa', 'USD', 'ASM'), | 
				
			||||||
 | 
						('AT', 'Austria', 'EUR', 'AUT'), | 
				
			||||||
 | 
						('AU', 'Australia', 'AUD', 'AUS'), | 
				
			||||||
 | 
						('AW', 'Aruba', 'AWG', 'ABW'), | 
				
			||||||
 | 
						('AX', 'Åland', 'EUR', 'ALA'), | 
				
			||||||
 | 
						('AZ', 'Azerbaijan', 'AZN', 'AZE'), | 
				
			||||||
 | 
						('BA', 'Bosnia and Herzegovina', 'BAM', 'BIH'), | 
				
			||||||
 | 
						('BB', 'Barbados', 'BBD', 'BRB'), | 
				
			||||||
 | 
						('BD', 'Bangladesh', 'BDT', 'BGD'), | 
				
			||||||
 | 
						('BE', 'Belgium', 'EUR', 'BEL'), | 
				
			||||||
 | 
						('BF', 'Burkina Faso', 'XOF', 'BFA'), | 
				
			||||||
 | 
						('BG', 'Bulgaria', 'BGN', 'BGR'), | 
				
			||||||
 | 
						('BH', 'Bahrain', 'BHD', 'BHR'), | 
				
			||||||
 | 
						('BI', 'Burundi', 'BIF', 'BDI'), | 
				
			||||||
 | 
						('BJ', 'Benin', 'XOF', 'BEN'), | 
				
			||||||
 | 
						('BL', 'Saint Barthélemy', 'EUR', 'BLM'), | 
				
			||||||
 | 
						('BM', 'Bermuda', 'BMD', 'BMU'), | 
				
			||||||
 | 
						('BN', 'Brunei', 'BND', 'BRN'), | 
				
			||||||
 | 
						('BO', 'Bolivia', 'BOB', 'BOL'), | 
				
			||||||
 | 
						('BQ', 'Bonaire', 'USD', 'BES'), | 
				
			||||||
 | 
						('BR', 'Brazil', 'BRL', 'BRA'), | 
				
			||||||
 | 
						('BS', 'Bahamas', 'BSD', 'BHS'), | 
				
			||||||
 | 
						('BT', 'Bhutan', 'BTN', 'BTN'), | 
				
			||||||
 | 
						('BV', 'Bouvet Island', 'NOK', 'BVT'), | 
				
			||||||
 | 
						('BW', 'Botswana', 'BWP', 'BWA'), | 
				
			||||||
 | 
						('BY', 'Belarus', 'BYR', 'BLR'), | 
				
			||||||
 | 
						('BZ', 'Belize', 'BZD', 'BLZ'), | 
				
			||||||
 | 
						('CA', 'Canada', 'CAD', 'CAN'), | 
				
			||||||
 | 
						('CC', 'Cocos [Keeling] Islands', 'AUD', 'CCK'), | 
				
			||||||
 | 
						('CD', 'Congo', 'CDF', 'COD'), | 
				
			||||||
 | 
						('CF', 'Central African Republic', 'XAF', 'CAF'), | 
				
			||||||
 | 
						('CG', 'Republic of the Congo', 'XAF', 'COG'), | 
				
			||||||
 | 
						('CH', 'Switzerland', 'CHF', 'CHE'), | 
				
			||||||
 | 
						('CI', 'Ivory Coast', 'XOF', 'CIV'), | 
				
			||||||
 | 
						('CK', 'Cook Islands', 'NZD', 'COK'), | 
				
			||||||
 | 
						('CL', 'Chile', 'CLP', 'CHL'), | 
				
			||||||
 | 
						('CM', 'Cameroon', 'XAF', 'CMR'), | 
				
			||||||
 | 
						('CN', 'China', 'CNY', 'CHN'), | 
				
			||||||
 | 
						('CO', 'Colombia', 'COP', 'COL'), | 
				
			||||||
 | 
						('CR', 'Costa Rica', 'CRC', 'CRI'), | 
				
			||||||
 | 
						('CU', 'Cuba', 'CUP', 'CUB'), | 
				
			||||||
 | 
						('CV', 'Cape Verde', 'CVE', 'CPV'), | 
				
			||||||
 | 
						('CW', 'Curacao', 'ANG', 'CUW'), | 
				
			||||||
 | 
						('CX', 'Christmas Island', 'AUD', 'CXR'), | 
				
			||||||
 | 
						('CY', 'Cyprus', 'EUR', 'CYP'), | 
				
			||||||
 | 
						('CZ', 'Czechia', 'CZK', 'CZE'), | 
				
			||||||
 | 
						('DE', 'Germany', 'EUR', 'DEU'), | 
				
			||||||
 | 
						('DJ', 'Djibouti', 'DJF', 'DJI'), | 
				
			||||||
 | 
						('DK', 'Denmark', 'DKK', 'DNK'), | 
				
			||||||
 | 
						('DM', 'Dominica', 'XCD', 'DMA'), | 
				
			||||||
 | 
						('DO', 'Dominican Republic', 'DOP', 'DOM'), | 
				
			||||||
 | 
						('DZ', 'Algeria', 'DZD', 'DZA'), | 
				
			||||||
 | 
						('EC', 'Ecuador', 'USD', 'ECU'), | 
				
			||||||
 | 
						('EE', 'Estonia', 'EUR', 'EST'), | 
				
			||||||
 | 
						('EG', 'Egypt', 'EGP', 'EGY'), | 
				
			||||||
 | 
						('EH', 'Western Sahara', 'MAD', 'ESH'), | 
				
			||||||
 | 
						('ER', 'Eritrea', 'ERN', 'ERI'), | 
				
			||||||
 | 
						('ES', 'Spain', 'EUR', 'ESP'), | 
				
			||||||
 | 
						('ET', 'Ethiopia', 'ETB', 'ETH'), | 
				
			||||||
 | 
						('FI', 'Finland', 'EUR', 'FIN'), | 
				
			||||||
 | 
						('FJ', 'Fiji', 'FJD', 'FJI'), | 
				
			||||||
 | 
						('FK', 'Falkland Islands', 'FKP', 'FLK'), | 
				
			||||||
 | 
						('FM', 'Micronesia', 'USD', 'FSM'), | 
				
			||||||
 | 
						('FO', 'Faroe Islands', 'DKK', 'FRO'), | 
				
			||||||
 | 
						('FR', 'France', 'EUR', 'FRA'), | 
				
			||||||
 | 
						('GA', 'Gabon', 'XAF', 'GAB'), | 
				
			||||||
 | 
						('GB', 'United Kingdom', 'GBP', 'GBR'), | 
				
			||||||
 | 
						('GD', 'Grenada', 'XCD', 'GRD'), | 
				
			||||||
 | 
						('GE', 'Georgia', 'GEL', 'GEO'), | 
				
			||||||
 | 
						('GF', 'French Guiana', 'EUR', 'GUF'), | 
				
			||||||
 | 
						('GG', 'Guernsey', 'GBP', 'GGY'), | 
				
			||||||
 | 
						('GH', 'Ghana', 'GHS', 'GHA'), | 
				
			||||||
 | 
						('GI', 'Gibraltar', 'GIP', 'GIB'), | 
				
			||||||
 | 
						('GL', 'Greenland', 'DKK', 'GRL'), | 
				
			||||||
 | 
						('GM', 'Gambia', 'GMD', 'GMB'), | 
				
			||||||
 | 
						('GN', 'Guinea', 'GNF', 'GIN'), | 
				
			||||||
 | 
						('GP', 'Guadeloupe', 'EUR', 'GLP'), | 
				
			||||||
 | 
						('GQ', 'Equatorial Guinea', 'XAF', 'GNQ'), | 
				
			||||||
 | 
						('GR', 'Greece', 'EUR', 'GRC'), | 
				
			||||||
 | 
						('GS', 'South Georgia and the South Sandwich Islands', 'GBP', 'SGS'), | 
				
			||||||
 | 
						('GT', 'Guatemala', 'GTQ', 'GTM'), | 
				
			||||||
 | 
						('GU', 'Guam', 'USD', 'GUM'), | 
				
			||||||
 | 
						('GW', 'Guinea-Bissau', 'XOF', 'GNB'), | 
				
			||||||
 | 
						('GY', 'Guyana', 'GYD', 'GUY'), | 
				
			||||||
 | 
						('HK', 'Hong Kong', 'HKD', 'HKG'), | 
				
			||||||
 | 
						('HM', 'Heard Island and McDonald Islands', 'AUD', 'HMD'), | 
				
			||||||
 | 
						('HN', 'Honduras', 'HNL', 'HND'), | 
				
			||||||
 | 
						('HR', 'Croatia', 'HRK', 'HRV'), | 
				
			||||||
 | 
						('HT', 'Haiti', 'HTG', 'HTI'), | 
				
			||||||
 | 
						('HU', 'Hungary', 'HUF', 'HUN'), | 
				
			||||||
 | 
						('ID', 'Indonesia', 'IDR', 'IDN'), | 
				
			||||||
 | 
						('IE', 'Ireland', 'EUR', 'IRL'), | 
				
			||||||
 | 
						('IL', 'Israel', 'ILS', 'ISR'), | 
				
			||||||
 | 
						('IM', 'Isle of Man', 'GBP', 'IMN'), | 
				
			||||||
 | 
						('IN', 'India', 'INR', 'IND'), | 
				
			||||||
 | 
						('IO', 'British Indian Ocean Territory', 'USD', 'IOT'), | 
				
			||||||
 | 
						('IQ', 'Iraq', 'IQD', 'IRQ'), | 
				
			||||||
 | 
						('IR', 'Iran', 'IRR', 'IRN'), | 
				
			||||||
 | 
						('IS', 'Iceland', 'ISK', 'ISL'), | 
				
			||||||
 | 
						('IT', 'Italy', 'EUR', 'ITA'), | 
				
			||||||
 | 
						('JE', 'Jersey', 'GBP', 'JEY'), | 
				
			||||||
 | 
						('JM', 'Jamaica', 'JMD', 'JAM'), | 
				
			||||||
 | 
						('JO', 'Jordan', 'JOD', 'JOR'), | 
				
			||||||
 | 
						('JP', 'Japan', 'JPY', 'JPN'), | 
				
			||||||
 | 
						('KE', 'Kenya', 'KES', 'KEN'), | 
				
			||||||
 | 
						('KG', 'Kyrgyzstan', 'KGS', 'KGZ'), | 
				
			||||||
 | 
						('KH', 'Cambodia', 'KHR', 'KHM'), | 
				
			||||||
 | 
						('KI', 'Kiribati', 'AUD', 'KIR'), | 
				
			||||||
 | 
						('KM', 'Comoros', 'KMF', 'COM'), | 
				
			||||||
 | 
						('KN', 'Saint Kitts and Nevis', 'XCD', 'KNA'), | 
				
			||||||
 | 
						('KP', 'North Korea', 'KPW', 'PRK'), | 
				
			||||||
 | 
						('KR', 'South Korea', 'KRW', 'KOR'), | 
				
			||||||
 | 
						('KW', 'Kuwait', 'KWD', 'KWT'), | 
				
			||||||
 | 
						('KY', 'Cayman Islands', 'KYD', 'CYM'), | 
				
			||||||
 | 
						('KZ', 'Kazakhstan', 'KZT', 'KAZ'), | 
				
			||||||
 | 
						('LA', 'Laos', 'LAK', 'LAO'), | 
				
			||||||
 | 
						('LB', 'Lebanon', 'LBP', 'LBN'), | 
				
			||||||
 | 
						('LC', 'Saint Lucia', 'XCD', 'LCA'), | 
				
			||||||
 | 
						('LI', 'Liechtenstein', 'CHF', 'LIE'), | 
				
			||||||
 | 
						('LK', 'Sri Lanka', 'LKR', 'LKA'), | 
				
			||||||
 | 
						('LR', 'Liberia', 'LRD', 'LBR'), | 
				
			||||||
 | 
						('LS', 'Lesotho', 'LSL', 'LSO'), | 
				
			||||||
 | 
						('LT', 'Lithuania', 'LTL', 'LTU'), | 
				
			||||||
 | 
						('LU', 'Luxembourg', 'EUR', 'LUX'), | 
				
			||||||
 | 
						('LV', 'Latvia', 'LVL', 'LVA'), | 
				
			||||||
 | 
						('LY', 'Libya', 'LYD', 'LBY'), | 
				
			||||||
 | 
						('MA', 'Morocco', 'MAD', 'MAR'), | 
				
			||||||
 | 
						('MC', 'Monaco', 'EUR', 'MCO'), | 
				
			||||||
 | 
						('MD', 'Moldova', 'MDL', 'MDA'), | 
				
			||||||
 | 
						('ME', 'Montenegro', 'EUR', 'MNE'), | 
				
			||||||
 | 
						('MF', 'Saint Martin', 'EUR', 'MAF'), | 
				
			||||||
 | 
						('MG', 'Madagascar', 'MGA', 'MDG'), | 
				
			||||||
 | 
						('MH', 'Marshall Islands', 'USD', 'MHL'), | 
				
			||||||
 | 
						('MK', 'Macedonia', 'MKD', 'MKD'), | 
				
			||||||
 | 
						('ML', 'Mali', 'XOF', 'MLI'), | 
				
			||||||
 | 
						('MM', 'Myanmar [Burma]', 'MMK', 'MMR'), | 
				
			||||||
 | 
						('MN', 'Mongolia', 'MNT', 'MNG'), | 
				
			||||||
 | 
						('MO', 'Macao', 'MOP', 'MAC'), | 
				
			||||||
 | 
						('MP', 'Northern Mariana Islands', 'USD', 'MNP'), | 
				
			||||||
 | 
						('MQ', 'Martinique', 'EUR', 'MTQ'), | 
				
			||||||
 | 
						('MR', 'Mauritania', 'MRO', 'MRT'), | 
				
			||||||
 | 
						('MS', 'Montserrat', 'XCD', 'MSR'), | 
				
			||||||
 | 
						('MT', 'Malta', 'EUR', 'MLT'), | 
				
			||||||
 | 
						('MU', 'Mauritius', 'MUR', 'MUS'), | 
				
			||||||
 | 
						('MV', 'Maldives', 'MVR', 'MDV'), | 
				
			||||||
 | 
						('MW', 'Malawi', 'MWK', 'MWI'), | 
				
			||||||
 | 
						('MX', 'Mexico', 'MXN', 'MEX'), | 
				
			||||||
 | 
						('MY', 'Malaysia', 'MYR', 'MYS'), | 
				
			||||||
 | 
						('MZ', 'Mozambique', 'MZN', 'MOZ'), | 
				
			||||||
 | 
						('NA', 'Namibia', 'NAD', 'NAM'), | 
				
			||||||
 | 
						('NC', 'New Caledonia', 'XPF', 'NCL'), | 
				
			||||||
 | 
						('NE', 'Niger', 'XOF', 'NER'), | 
				
			||||||
 | 
						('NF', 'Norfolk Island', 'AUD', 'NFK'), | 
				
			||||||
 | 
						('NG', 'Nigeria', 'NGN', 'NGA'), | 
				
			||||||
 | 
						('NI', 'Nicaragua', 'NIO', 'NIC'), | 
				
			||||||
 | 
						('NL', 'Netherlands', 'EUR', 'NLD'), | 
				
			||||||
 | 
						('NO', 'Norway', 'NOK', 'NOR'), | 
				
			||||||
 | 
						('NP', 'Nepal', 'NPR', 'NPL'), | 
				
			||||||
 | 
						('NR', 'Nauru', 'AUD', 'NRU'), | 
				
			||||||
 | 
						('NU', 'Niue', 'NZD', 'NIU'), | 
				
			||||||
 | 
						('NZ', 'New Zealand', 'NZD', 'NZL'), | 
				
			||||||
 | 
						('OM', 'Oman', 'OMR', 'OMN'), | 
				
			||||||
 | 
						('PA', 'Panama', 'PAB', 'PAN'), | 
				
			||||||
 | 
						('PE', 'Peru', 'PEN', 'PER'), | 
				
			||||||
 | 
						('PF', 'French Polynesia', 'XPF', 'PYF'), | 
				
			||||||
 | 
						('PG', 'Papua New Guinea', 'PGK', 'PNG'), | 
				
			||||||
 | 
						('PH', 'Philippines', 'PHP', 'PHL'), | 
				
			||||||
 | 
						('PK', 'Pakistan', 'PKR', 'PAK'), | 
				
			||||||
 | 
						('PL', 'Poland', 'PLN', 'POL'), | 
				
			||||||
 | 
						('PM', 'Saint Pierre and Miquelon', 'EUR', 'SPM'), | 
				
			||||||
 | 
						('PN', 'Pitcairn Islands', 'NZD', 'PCN'), | 
				
			||||||
 | 
						('PR', 'Puerto Rico', 'USD', 'PRI'), | 
				
			||||||
 | 
						('PS', 'Palestine', 'ILS', 'PSE'), | 
				
			||||||
 | 
						('PT', 'Portugal', 'EUR', 'PRT'), | 
				
			||||||
 | 
						('PW', 'Palau', 'USD', 'PLW'), | 
				
			||||||
 | 
						('PY', 'Paraguay', 'PYG', 'PRY'), | 
				
			||||||
 | 
						('QA', 'Qatar', 'QAR', 'QAT'), | 
				
			||||||
 | 
						('RE', 'Réunion', 'EUR', 'REU'), | 
				
			||||||
 | 
						('RO', 'Romania', 'RON', 'ROU'), | 
				
			||||||
 | 
						('RS', 'Serbia', 'RSD', 'SRB'), | 
				
			||||||
 | 
						('RU', 'Russia', 'RUB', 'RUS'), | 
				
			||||||
 | 
						('RW', 'Rwanda', 'RWF', 'RWA'), | 
				
			||||||
 | 
						('SA', 'Saudi Arabia', 'SAR', 'SAU'), | 
				
			||||||
 | 
						('SB', 'Solomon Islands', 'SBD', 'SLB'), | 
				
			||||||
 | 
						('SC', 'Seychelles', 'SCR', 'SYC'), | 
				
			||||||
 | 
						('SD', 'Sudan', 'SDG', 'SDN'), | 
				
			||||||
 | 
						('SE', 'Sweden', 'SEK', 'SWE'), | 
				
			||||||
 | 
						('SG', 'Singapore', 'SGD', 'SGP'), | 
				
			||||||
 | 
						('SH', 'Saint Helena', 'SHP', 'SHN'), | 
				
			||||||
 | 
						('SI', 'Slovenia', 'EUR', 'SVN'), | 
				
			||||||
 | 
						('SJ', 'Svalbard and Jan Mayen', 'NOK', 'SJM'), | 
				
			||||||
 | 
						('SK', 'Slovakia', 'EUR', 'SVK'), | 
				
			||||||
 | 
						('SL', 'Sierra Leone', 'SLL', 'SLE'), | 
				
			||||||
 | 
						('SM', 'San Marino', 'EUR', 'SMR'), | 
				
			||||||
 | 
						('SN', 'Senegal', 'XOF', 'SEN'), | 
				
			||||||
 | 
						('SO', 'Somalia', 'SOS', 'SOM'), | 
				
			||||||
 | 
						('SR', 'Suriname', 'SRD', 'SUR'), | 
				
			||||||
 | 
						('SS', 'South Sudan', 'SSP', 'SSD'), | 
				
			||||||
 | 
						('ST', 'São Tomé and Príncipe', 'STD', 'STP'), | 
				
			||||||
 | 
						('SV', 'El Salvador', 'USD', 'SLV'), | 
				
			||||||
 | 
						('SX', 'Sint Maarten', 'ANG', 'SXM'), | 
				
			||||||
 | 
						('SY', 'Syria', 'SYP', 'SYR'), | 
				
			||||||
 | 
						('SZ', 'Swaziland', 'SZL', 'SWZ'), | 
				
			||||||
 | 
						('TC', 'Turks and Caicos Islands', 'USD', 'TCA'), | 
				
			||||||
 | 
						('TD', 'Chad', 'XAF', 'TCD'), | 
				
			||||||
 | 
						('TF', 'French Southern Territories', 'EUR', 'ATF'), | 
				
			||||||
 | 
						('TG', 'Togo', 'XOF', 'TGO'), | 
				
			||||||
 | 
						('TH', 'Thailand', 'THB', 'THA'), | 
				
			||||||
 | 
						('TJ', 'Tajikistan', 'TJS', 'TJK'), | 
				
			||||||
 | 
						('TK', 'Tokelau', 'NZD', 'TKL'), | 
				
			||||||
 | 
						('TL', 'East Timor', 'USD', 'TLS'), | 
				
			||||||
 | 
						('TM', 'Turkmenistan', 'TMT', 'TKM'), | 
				
			||||||
 | 
						('TN', 'Tunisia', 'TND', 'TUN'), | 
				
			||||||
 | 
						('TO', 'Tonga', 'TOP', 'TON'), | 
				
			||||||
 | 
						('TR', 'Turkey', 'TRY', 'TUR'), | 
				
			||||||
 | 
						('TT', 'Trinidad and Tobago', 'TTD', 'TTO'), | 
				
			||||||
 | 
						('TV', 'Tuvalu', 'AUD', 'TUV'), | 
				
			||||||
 | 
						('TW', 'Taiwan', 'TWD', 'TWN'), | 
				
			||||||
 | 
						('TZ', 'Tanzania', 'TZS', 'TZA'), | 
				
			||||||
 | 
						('UA', 'Ukraine', 'UAH', 'UKR'), | 
				
			||||||
 | 
						('UG', 'Uganda', 'UGX', 'UGA'), | 
				
			||||||
 | 
						('UM', 'U.S. Minor Outlying Islands', 'USD', 'UMI'), | 
				
			||||||
 | 
						('US', 'United States', 'USD', 'USA'), | 
				
			||||||
 | 
						('UY', 'Uruguay', 'UYU', 'URY'), | 
				
			||||||
 | 
						('UZ', 'Uzbekistan', 'UZS', 'UZB'), | 
				
			||||||
 | 
						('VA', 'Vatican City', 'EUR', 'VAT'), | 
				
			||||||
 | 
						('VC', 'Saint Vincent and the Grenadines', 'XCD', 'VCT'), | 
				
			||||||
 | 
						('VE', 'Venezuela', 'VEF', 'VEN'), | 
				
			||||||
 | 
						('VG', 'British Virgin Islands', 'USD', 'VGB'), | 
				
			||||||
 | 
						('VI', 'U.S. Virgin Islands', 'USD', 'VIR'), | 
				
			||||||
 | 
						('VN', 'Vietnam', 'VND', 'VNM'), | 
				
			||||||
 | 
						('VU', 'Vanuatu', 'VUV', 'VUT'), | 
				
			||||||
 | 
						('WF', 'Wallis and Futuna', 'XPF', 'WLF'), | 
				
			||||||
 | 
						('WS', 'Samoa', 'WST', 'WSM'), | 
				
			||||||
 | 
						('XK', 'Kosovo', 'EUR', 'XKX'), | 
				
			||||||
 | 
						('YE', 'Yemen', 'YER', 'YEM'), | 
				
			||||||
 | 
						('YT', 'Mayotte', 'EUR', 'MYT'), | 
				
			||||||
 | 
						('ZA', 'South Africa', 'ZAR', 'ZAF'), | 
				
			||||||
 | 
						('ZM', 'Zambia', 'ZMK', 'ZMB'), | 
				
			||||||
 | 
						('ZW', 'Zimbabwe', 'ZWL', 'ZWE')"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$table = Database::get_main_table(TABLE_BUY_COURSE_PAYPAL); | 
				
			||||||
 | 
					$sql = "CREATE TABLE IF NOT EXISTS $table ( | 
				
			||||||
 | 
					    id INT unsigned NOT NULL auto_increment PRIMARY KEY, | 
				
			||||||
 | 
					    sandbox VARCHAR(5) NOT NULL DEFAULT 'YES', | 
				
			||||||
 | 
					    username VARCHAR(100) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    password VARCHAR(100) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    signature VARCHAR(100) NOT NULL DEFAULT '')"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$sql = "INSERT INTO $table (id,username,password,signature) VALUES ('1', 'API_UserName', 'API_Password', 'API_Signature')"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$table = Database::get_main_table(TABLE_BUY_COURSE_TRANSFERENCE); | 
				
			||||||
 | 
					$sql = "CREATE TABLE IF NOT EXISTS $table ( | 
				
			||||||
 | 
					    id INT unsigned NOT NULL auto_increment PRIMARY KEY, | 
				
			||||||
 | 
					    name VARCHAR(100) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    account VARCHAR(100) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    swift VARCHAR(100) NOT NULL DEFAULT '')"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$table = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); | 
				
			||||||
 | 
					$sql = "CREATE TABLE IF NOT EXISTS $table ( | 
				
			||||||
 | 
					    cod INT unsigned NOT NULL auto_increment PRIMARY KEY, | 
				
			||||||
 | 
					    user_id INT unsigned NOT NULL, | 
				
			||||||
 | 
					    name VARCHAR(255) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    course_code VARCHAR(200) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    title VARCHAR(200) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    reference VARCHAR(20) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    price FLOAT(11,2) NOT NULL DEFAULT '0', | 
				
			||||||
 | 
					    date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$table = Database::get_main_table(TABLE_BUY_COURSE_SALE); | 
				
			||||||
 | 
					$sql = "CREATE TABLE IF NOT EXISTS $table ( | 
				
			||||||
 | 
					    cod INT unsigned NOT NULL auto_increment PRIMARY KEY, | 
				
			||||||
 | 
					    user_id INT unsigned NOT NULL, | 
				
			||||||
 | 
					    course_code VARCHAR(200) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    price FLOAT(11,2) NOT NULL DEFAULT '0', | 
				
			||||||
 | 
					    payment_type VARCHAR(100) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    status VARCHAR(20) NOT NULL DEFAULT '', | 
				
			||||||
 | 
					    date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"; | 
				
			||||||
 | 
					Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//Menu main tabs | 
				
			||||||
 | 
					$rsTab = $objPlugin->addTab('Buy Courses', 'plugin/buy_courses/index.php'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($rsTab) { | 
				
			||||||
 | 
					    echo "<script>location.href = '" . $_SERVER['REQUEST_URI'] . "';</script>"; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,7 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Show form | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					require_once('config.php'); | 
				
			||||||
 | 
					require_once('src/index.buycourses.php'); | 
				
			||||||
@ -0,0 +1,12 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * This script is included by main/admin/settings.lib.php and generally | 
				
			||||||
 | 
					 * includes things to execute in the main database (settings_current table) | 
				
			||||||
 | 
					 * @package chamilo.plugin.bigbluebutton | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Initialization | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/config.php'; | 
				
			||||||
 | 
					Buy_CoursesPlugin::create()->install(); | 
				
			||||||
@ -0,0 +1,219 @@ | 
				
			|||||||
 | 
					$(document).ready(function () { | 
				
			||||||
 | 
					    $("input[name='price']").change(function () { | 
				
			||||||
 | 
					        $(this).parent().next().children().attr("style", "display:none"); | 
				
			||||||
 | 
					        $(this).parent().next().children().next().attr("style", "display:''"); | 
				
			||||||
 | 
					        $(this).parent().parent().addClass("fmod") | 
				
			||||||
 | 
					        $(this).parent().parent().children().each(function () { | 
				
			||||||
 | 
					            $(this).addClass("btop"); | 
				
			||||||
 | 
					        }); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $("input[name='price']").keyup(function () { | 
				
			||||||
 | 
					        $(this).parent().next().children().attr("style", "display:none"); | 
				
			||||||
 | 
					        $(this).parent().next().children().next().attr("style", "display:''"); | 
				
			||||||
 | 
					        $(this).parent().parent().addClass("fmod") | 
				
			||||||
 | 
					        $(this).parent().parent().children().each(function () { | 
				
			||||||
 | 
					            $(this).addClass("btop"); | 
				
			||||||
 | 
					        }); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $("input[name='visible']").change(function () { | 
				
			||||||
 | 
					        $(this).parent().next().next().children().attr("style", "display:none"); | 
				
			||||||
 | 
					        $(this).parent().next().next().children().next().attr("style", "display:''"); | 
				
			||||||
 | 
					        $(this).parent().parent().addClass("fmod") | 
				
			||||||
 | 
					        $(this).parent().parent().children().each(function () { | 
				
			||||||
 | 
					            $(this).addClass("btop"); | 
				
			||||||
 | 
					        }); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(".save").click(function () { | 
				
			||||||
 | 
					        var visible = $(this).parent().parent().prev().prev().children().attr("checked"); | 
				
			||||||
 | 
					        var price = $(this).parent().parent().prev().children().attr("value"); | 
				
			||||||
 | 
					        var id_course = $(this).attr('id'); | 
				
			||||||
 | 
					        $.post("function.php", {tab: "save_mod", id_course: id_course, visible: visible, price: price}, | 
				
			||||||
 | 
					            function (data) { | 
				
			||||||
 | 
					                if (data.status == "false") { | 
				
			||||||
 | 
					                    alert("Database Error"); | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                    $("#course" + data.id_course).children().attr("style", "display:''"); | 
				
			||||||
 | 
					                    $("#course" + data.id_course).children().next().attr("style", "display:none"); | 
				
			||||||
 | 
					                    $("#course" + data.id_course).parent().removeClass("fmod") | 
				
			||||||
 | 
					                    $("#course" + data.id_course).parent().children().each(function () { | 
				
			||||||
 | 
					                        $(this).removeClass("btop"); | 
				
			||||||
 | 
					                    }); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            }, "json"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $('#sync').click(function (e) { | 
				
			||||||
 | 
					        $.post("function.php", {tab: "sync"}, | 
				
			||||||
 | 
					            function (data) { | 
				
			||||||
 | 
					                if (data.status == "false") { | 
				
			||||||
 | 
					                    alert(data.contenido); | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                    alert(data.contenido); | 
				
			||||||
 | 
					                    location.reload(); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            }, "json"); | 
				
			||||||
 | 
					        e.preventDefault(); | 
				
			||||||
 | 
					        e.stopPropagation(); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $('#confirm_filter').click(function (e) { | 
				
			||||||
 | 
					        var vcourse = $("#course_name").attr("value"); | 
				
			||||||
 | 
					        var pmin = $("#price_min").attr("value"); | 
				
			||||||
 | 
					        var pmax = $("#price_max").attr("value"); | 
				
			||||||
 | 
					        if ($("#mostrar_disponibles").attr("checked") == "checked") { | 
				
			||||||
 | 
					            var vshow = "YES"; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            var vshow = "NO"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        var vcategory = $("#courses_category").attr("value"); | 
				
			||||||
 | 
					        $.post("function.php", {tab: "courses_filter", course: vcourse, pricemin: pmin, pricemax: pmax, mostrar: vshow, category: vcategory}, | 
				
			||||||
 | 
					            function (data) { | 
				
			||||||
 | 
					                if (data.status == "false") { | 
				
			||||||
 | 
					                    alert(data.content); | 
				
			||||||
 | 
					                    $("#course_results").html(''); | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                    $("#course_results").html(data.content); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					                $(document).ready(acciones_ajax); | 
				
			||||||
 | 
					            }, "json"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        e.preventDefault(); | 
				
			||||||
 | 
					        e.stopPropagation(); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $("#save_currency").click(function (e) { | 
				
			||||||
 | 
					        var currency_type = $("#currency_type").attr("value"); | 
				
			||||||
 | 
					        $.post("function.php", {tab: "save_currency", currency: currency_type}, | 
				
			||||||
 | 
					            function (data) { | 
				
			||||||
 | 
					                alert(data.content); | 
				
			||||||
 | 
					            }, "json"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        e.preventDefault(); | 
				
			||||||
 | 
					        e.stopPropagation(); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $("#save_paypal").click(function (e) { | 
				
			||||||
 | 
					        var name = $("#username").attr("value"); | 
				
			||||||
 | 
					        var clave = $("#password").attr("value"); | 
				
			||||||
 | 
					        var firma = $("#signature").attr("value"); | 
				
			||||||
 | 
					        if ($("#sandbox").attr("checked") == "checked") { | 
				
			||||||
 | 
					            var vsandbox = "YES"; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            var vsandbox = "NO"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        $.post("function.php", {tab: "save_paypal", username: name, password: clave, signature: firma, sandbox: vsandbox}, | 
				
			||||||
 | 
					            function (data) { | 
				
			||||||
 | 
					                alert(data.content); | 
				
			||||||
 | 
					            }, "json"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        e.preventDefault(); | 
				
			||||||
 | 
					        e.stopPropagation(); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $("#add_account").click(function (e) { | 
				
			||||||
 | 
					        var tname = $("#tname").attr("value"); | 
				
			||||||
 | 
					        var taccount = $("#taccount").attr("value"); | 
				
			||||||
 | 
					        var tswift = $("#tswift").attr("value"); | 
				
			||||||
 | 
					        if (tname == '' || taccount == '') { | 
				
			||||||
 | 
					            alert("Complete los campos antes de insertar"); | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $.post("function.php", {tab: "add_account", name: tname, account: taccount, swift: tswift}, | 
				
			||||||
 | 
					                function (data) { | 
				
			||||||
 | 
					                    location.reload(); | 
				
			||||||
 | 
					                }, "json"); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        e.preventDefault(); | 
				
			||||||
 | 
					        e.stopPropagation(); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(".delete_account").click(function (e) { | 
				
			||||||
 | 
					        var fieldName = $(this).parent().attr("id"); | 
				
			||||||
 | 
					        var id = $("#id_" + fieldName).val(); | 
				
			||||||
 | 
					        $.post("function.php", {tab: "delete_account", id: id}, | 
				
			||||||
 | 
					            function (data) { | 
				
			||||||
 | 
					                location.reload(); | 
				
			||||||
 | 
					            }, "json"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        e.preventDefault(); | 
				
			||||||
 | 
					        e.stopPropagation(); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $("#cancel_order").click(function (e) { | 
				
			||||||
 | 
					        $.post("function.php", {tab: "unset_variables"}); | 
				
			||||||
 | 
					        window.location.replace("list.php"); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(".clear_order").click(function (e) { | 
				
			||||||
 | 
					        var vid = $(this).parent().attr("id"); | 
				
			||||||
 | 
					        $.post("function.php", {tab: "clear_order", id: vid}, | 
				
			||||||
 | 
					            function (data) { | 
				
			||||||
 | 
					                location.reload(); | 
				
			||||||
 | 
					            }, "json"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        e.preventDefault(); | 
				
			||||||
 | 
					        e.stopPropagation(); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(".confirm_order").click(function (e) { | 
				
			||||||
 | 
					        var vid = $(this).parent().attr("id"); | 
				
			||||||
 | 
					        $.post("function.php", {tab: "confirm_order", id: vid}, | 
				
			||||||
 | 
					            function (data) { | 
				
			||||||
 | 
					                location.reload(); | 
				
			||||||
 | 
					            }, "json"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        e.preventDefault(); | 
				
			||||||
 | 
					        e.stopPropagation(); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(".slt_tpv").change(function () { | 
				
			||||||
 | 
					        var vcod = $(this).attr("value"); | 
				
			||||||
 | 
					        $.post("function.php", {tab: "activar_tpv", cod: vcod}); | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					}); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function acciones_ajax() { | 
				
			||||||
 | 
					    $('.ajax').on('click', function () { | 
				
			||||||
 | 
					        var url = this.href; | 
				
			||||||
 | 
					        var dialog = $("#dialog"); | 
				
			||||||
 | 
					        if ($("#dialog").length == 0) { | 
				
			||||||
 | 
					            dialog = $('<div id="dialog" style="display:none"></div>').appendTo('body'); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        width_value = 580; | 
				
			||||||
 | 
					        height_value = 450; | 
				
			||||||
 | 
					        resizable_value = true; | 
				
			||||||
 | 
					        new_param = get_url_params(url, 'width'); | 
				
			||||||
 | 
					        if (new_param) { | 
				
			||||||
 | 
					            width_value = new_param; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        new_param = get_url_params(url, 'height') | 
				
			||||||
 | 
					        if (new_param) { | 
				
			||||||
 | 
					            height_value = new_param; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        new_param = get_url_params(url, 'resizable'); | 
				
			||||||
 | 
					        if (new_param) { | 
				
			||||||
 | 
					            resizable_value = new_param; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        // load remote content
 | 
				
			||||||
 | 
					        dialog.load( | 
				
			||||||
 | 
					            url, | 
				
			||||||
 | 
					            {}, | 
				
			||||||
 | 
					            function (responseText, textStatus, XMLHttpRequest) { | 
				
			||||||
 | 
					                dialog.dialog({ | 
				
			||||||
 | 
					                    modal: true, | 
				
			||||||
 | 
					                    width: width_value, | 
				
			||||||
 | 
					                    height: height_value, | 
				
			||||||
 | 
					                    resizable: resizable_value | 
				
			||||||
 | 
					                }); | 
				
			||||||
 | 
					            }); | 
				
			||||||
 | 
					        //prevent the browser to follow the link
 | 
				
			||||||
 | 
					        return false; | 
				
			||||||
 | 
					    }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
							
 | 
				
			||||||
@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * This script is a configuration file for the date plugin. You can use it as a master for other platform plugins (course plugins are slightly different). | 
				
			||||||
 | 
					 * These settings will be used in the administration interface for plugins (Chamilo configuration settings->Plugins) | 
				
			||||||
 | 
					 * @package chamilo.plugin | 
				
			||||||
 | 
					 * @author Yannick Warnier <ywarnier@beeznest.org> | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Plugin details (must be present) | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/config.php'; | 
				
			||||||
 | 
					$plugin_info = Buy_CoursesPlugin::create()->get_info(); | 
				
			||||||
@ -0,0 +1,5 @@ | 
				
			|||||||
 | 
					Buy Courses<br/><br/> | 
				
			||||||
 | 
					Users can access to the catalog to buy the visible courses.<br/> | 
				
			||||||
 | 
					If the user is unregistered this user will be requested to register.<br/> | 
				
			||||||
 | 
					Once the course is chosen Chamilo is going to show different enabled payment types. <br/> | 
				
			||||||
 | 
					Finally the user will receive through email the user and password to access to the chosen course. <br/> | 
				
			||||||
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
@ -0,0 +1,105 @@ | 
				
			|||||||
 | 
					body { | 
				
			||||||
 | 
					    background-color: #FFFFFF; | 
				
			||||||
 | 
					    font-family: Verdana, Arial, Helvetica, sans-serif; | 
				
			||||||
 | 
					    font-size: 10px; | 
				
			||||||
 | 
					    scrollbar-3dlight-color: #F0F0EE; | 
				
			||||||
 | 
					    scrollbar-arrow-color: #676662; | 
				
			||||||
 | 
					    scrollbar-base-color: #F0F0EE; | 
				
			||||||
 | 
					    scrollbar-darkshadow-color: #DDDDDD; | 
				
			||||||
 | 
					    scrollbar-face-color: #E0E0DD; | 
				
			||||||
 | 
					    scrollbar-highlight-color: #F0F0EE; | 
				
			||||||
 | 
					    scrollbar-shadow-color: #F0F0EE; | 
				
			||||||
 | 
					    scrollbar-track-color: #F5F5F5; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					td { | 
				
			||||||
 | 
					    font-family: Verdana, Arial, Helvetica, sans-serif; | 
				
			||||||
 | 
					    font-size: 10px; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pre { | 
				
			||||||
 | 
					    font-family: Verdana, Arial, Helvetica, sans-serif; | 
				
			||||||
 | 
					    font-size: 10px; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.example1 { | 
				
			||||||
 | 
					    font-weight: bold; | 
				
			||||||
 | 
					    font-size: 14px | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.example2 { | 
				
			||||||
 | 
					    font-weight: bold; | 
				
			||||||
 | 
					    font-size: 12px; | 
				
			||||||
 | 
					    color: #FF0000 | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tablerow1 { | 
				
			||||||
 | 
					    background-color: #BBBBBB; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					thead { | 
				
			||||||
 | 
					    background-color: #FFBBBB; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tfoot { | 
				
			||||||
 | 
					    background-color: #BBBBFF; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					th { | 
				
			||||||
 | 
					    font-family: Verdana, Arial, Helvetica, sans-serif; | 
				
			||||||
 | 
					    font-size: 13px; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Basic formats */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.bold { | 
				
			||||||
 | 
					    font-weight: bold; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.italic { | 
				
			||||||
 | 
					    font-style: italic; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.underline { | 
				
			||||||
 | 
					    text-decoration: underline; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Global align classes */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.left { | 
				
			||||||
 | 
					    text-align: inherit; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.center { | 
				
			||||||
 | 
					    text-align: center; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.right { | 
				
			||||||
 | 
					    text-align: right; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.full { | 
				
			||||||
 | 
					    text-align: justify | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Image and table specific aligns */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					img.left, table.left { | 
				
			||||||
 | 
					    float: left; | 
				
			||||||
 | 
					    text-align: inherit; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					img.center, table.center { | 
				
			||||||
 | 
					    margin-left: auto; | 
				
			||||||
 | 
					    margin-right: auto; | 
				
			||||||
 | 
					    text-align: inherit; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					img.center { | 
				
			||||||
 | 
					    display: block; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					img.right, table.right { | 
				
			||||||
 | 
					    float: right; | 
				
			||||||
 | 
					    text-align: inherit; | 
				
			||||||
 | 
					} | 
				
			||||||
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 2.5 KiB  | 
| 
		 After Width: | Height: | Size: 1.7 KiB  | 
| 
		 After Width: | Height: | Size: 1.7 KiB  | 
| 
		 After Width: | Height: | Size: 983 B  | 
| 
		 After Width: | Height: | Size: 2.1 KiB  | 
@ -0,0 +1,79 @@ | 
				
			|||||||
 | 
					.cleared { | 
				
			||||||
 | 
					    content: "."; | 
				
			||||||
 | 
					    display: block; | 
				
			||||||
 | 
					    height: 0; | 
				
			||||||
 | 
					    clear: both; | 
				
			||||||
 | 
					    visibility: hidden; | 
				
			||||||
 | 
					    line-height: 0; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table td.ta-center, table th.ta-center { | 
				
			||||||
 | 
					    text-align: center; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#courses_table td, #transference_table td, #order_table td { | 
				
			||||||
 | 
					    vertical-align: middle; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#courses_table td input.price, #transference_table td input, #currency_type { | 
				
			||||||
 | 
					    margin: 0; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#courses_table td.btop { | 
				
			||||||
 | 
					    border-top: 1px solid red; | 
				
			||||||
 | 
					    border-bottom: 1px solid red; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#courses_table tr.fmod { | 
				
			||||||
 | 
					    border: 1px solid red; | 
				
			||||||
 | 
					    background: #FFE0E0; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.sprice { | 
				
			||||||
 | 
					    color: #FF5555; | 
				
			||||||
 | 
					    font-size: 26px; | 
				
			||||||
 | 
					    font-weight: 500; | 
				
			||||||
 | 
					    margin: 15px 0; | 
				
			||||||
 | 
					    text-shadow: 2px 1px 0 #222222; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dinline { | 
				
			||||||
 | 
					    display: inline; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fright { | 
				
			||||||
 | 
					    float: right; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.cursor { | 
				
			||||||
 | 
					    cursor: pointer; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ta-center { | 
				
			||||||
 | 
					    text-align: center; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					textarea#message { | 
				
			||||||
 | 
					    width: 50%; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.send_result { | 
				
			||||||
 | 
					    font-weight: bold; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					select#lsessions, select#lcourses, select#lexercises, select#status { | 
				
			||||||
 | 
					    margin-bottom: 0px; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.column_field_filter { | 
				
			||||||
 | 
					    padding: 6px 10px 1px 1px; | 
				
			||||||
 | 
					    text-align: right; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.height5 { | 
				
			||||||
 | 
					    height: 5px; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.margin-left-fifty{ | 
				
			||||||
 | 
					    margin-left: 50px !important; | 
				
			||||||
 | 
					} | 
				
			||||||
| 
		 After Width: | Height: | Size: 898 B  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 1.8 KiB  | 
@ -0,0 +1,29 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once '../config.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'mail.lib.inc.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$language_file = array('course_description'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Get the name of the database course.		 | 
				
			||||||
 | 
					$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$code = Database::escape_string($_GET['code']); | 
				
			||||||
 | 
					$course_info = api_get_course_info($code); | 
				
			||||||
 | 
					echo Display::tag('h2', $course_info['name']); | 
				
			||||||
 | 
					echo '<br />'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$sql = "SELECT * FROM $tbl_course_description | 
				
			||||||
 | 
					    WHERE c_id = " . intval($course_info['real_id']) . " | 
				
			||||||
 | 
					    AND session_id = 0 ORDER BY id"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$result = Database::query($sql); | 
				
			||||||
 | 
					if (Database::num_rows($result) > 0) { | 
				
			||||||
 | 
					    while ($description = Database::fetch_object($result)) { | 
				
			||||||
 | 
					        $descriptions[$description->id] = $description; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    // Function that displays the details of the course description in html. | 
				
			||||||
 | 
					    echo CourseManager::get_details_course_description_html($descriptions, api_get_system_encoding(), false); | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    echo get_lang('NoDescription'); | 
				
			||||||
 | 
					}		 | 
				
			||||||
@ -0,0 +1,342 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Functions | 
				
			||||||
 | 
					 * @package chamilo.plugin.notify | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					require_once '../../../main/inc/global.inc.php'; | 
				
			||||||
 | 
					require_once '../config.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'plugin.class.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function sync() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourse = Database::get_main_table(TABLE_BUY_COURSE); | 
				
			||||||
 | 
					    $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $sql = "UPDATE $tableBuyCourse SET sync = 0"; | 
				
			||||||
 | 
					    Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $sql = "SELECT id FROM $tableCourse"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        $sql = "SELECT 1 FROM $tableBuyCourse WHERE id_course='" . $row['id'] . "';"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					        if (Database::affected_rows() > 0) { | 
				
			||||||
 | 
					            $sql = "UPDATE $tableBuyCourse SET sync = 1 WHERE id_course='" . $row['id'] . "';"; | 
				
			||||||
 | 
					            Database::query($sql); | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $sql = "INSERT INTO $tableBuyCourse (id_course, visible, sync) VALUES ('" . $row['id'] . "', 0, 1);"; | 
				
			||||||
 | 
					            Database::query($sql); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    $sql = "DELETE FROM $tableBuyCourse WHERE sync = 0;"; | 
				
			||||||
 | 
					    Database::query($sql); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function listCourses() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourse = Database::get_main_table(TABLE_BUY_COURSE); | 
				
			||||||
 | 
					    $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); | 
				
			||||||
 | 
					    $sql = "SELECT a.id_course, a.visible, a.price, b.* | 
				
			||||||
 | 
					        FROM $tableBuyCourse a, $tableCourse b | 
				
			||||||
 | 
					        WHERE a.id_course = b.id;"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $aux = array(); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        $aux[] = $row; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $aux; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function userCourseList() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourse = Database::get_main_table(TABLE_BUY_COURSE); | 
				
			||||||
 | 
					    $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); | 
				
			||||||
 | 
					    $tableCourseRelUser = Database::get_main_table(TABLE_MAIN_COURSE_USER); | 
				
			||||||
 | 
					    $tableBuyCourseTemporal = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $sql = "SELECT a.id_course, a.visible, a.price, b.* | 
				
			||||||
 | 
					        FROM $tableBuyCourse a, $tableCourse b | 
				
			||||||
 | 
					        WHERE a.id_course = b.id AND a.visible = 1;"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $aux = array(); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        //check teacher | 
				
			||||||
 | 
					        $sql = "SELECT lastname, firstname | 
				
			||||||
 | 
					        FROM course_rel_user a, user b | 
				
			||||||
 | 
					        WHERE a.course_code='" . $row['code'] . "' | 
				
			||||||
 | 
					        AND a.role<>'' AND a.role<>'NULL' | 
				
			||||||
 | 
					        AND a.user_id=b.user_id;"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $tmp = Database::query($sql); | 
				
			||||||
 | 
					        $rowTmp = Database::fetch_assoc($tmp); | 
				
			||||||
 | 
					        $row['teacher'] = $rowTmp['firstname'] . ' ' . $rowTmp['lastname']; | 
				
			||||||
 | 
					        //check if the user is enrolled | 
				
			||||||
 | 
					        if (isset($_SESSION['_user']) || $_SESSION['_user']['user_id'] != '') { | 
				
			||||||
 | 
					            $sql = "SELECT 1 FROM $tableCourseRelUser | 
				
			||||||
 | 
					                WHERE course_code='" . $row['code'] . "' | 
				
			||||||
 | 
					                AND user_id='" . $_SESSION['_user']['user_id'] . "';"; | 
				
			||||||
 | 
					            Database::query($sql); | 
				
			||||||
 | 
					            if (Database::affected_rows() > 0) { | 
				
			||||||
 | 
					                $row['enrolled'] = "YES"; | 
				
			||||||
 | 
					            } else { | 
				
			||||||
 | 
					                $sql = "SELECT 1 FROM $tableBuyCourseTemporal | 
				
			||||||
 | 
					                    WHERE course_code='" . $row['code'] . "' | 
				
			||||||
 | 
					                    AND user_id='" . $_SESSION['_user']['user_id'] . "';"; | 
				
			||||||
 | 
					                Database::query($sql); | 
				
			||||||
 | 
					                if (Database::affected_rows() > 0) { | 
				
			||||||
 | 
					                    $row['enrolled'] = "TMP"; | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                    $row['enrolled'] = "NO"; | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $sql = "SELECT 1 FROM $tableBuyCourseTemporal | 
				
			||||||
 | 
					                WHERE course_code='" . $row['code'] . "' | 
				
			||||||
 | 
					                AND user_id='" . $_SESSION['_user']['user_id'] . "';"; | 
				
			||||||
 | 
					            Database::query($sql); | 
				
			||||||
 | 
					            if (Database::affected_rows() > 0) { | 
				
			||||||
 | 
					                $row['enrolled'] = "TMP"; | 
				
			||||||
 | 
					            } else { | 
				
			||||||
 | 
					                $row['enrolled'] = "NO"; | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        //check images | 
				
			||||||
 | 
					        if (file_exists("../../courses/" . $row['code'] . "/course-pic85x85.png")) { | 
				
			||||||
 | 
					            $row['course_img'] = "courses/" . $row['code'] . "/course-pic85x85.png"; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $row['course_img'] = "main/img/without_picture.png"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        $row['price'] = number_format($row['price'], 2, '.', ' '); | 
				
			||||||
 | 
					        $aux[] = $row; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $aux; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function checkUserCourse($course, $user) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableCourseRelUser = Database::get_main_table(TABLE_MAIN_COURSE_USER); | 
				
			||||||
 | 
					    $sql = "SELECT 1 FROM $tableCourseRelUser | 
				
			||||||
 | 
					        WHERE course_code='" . $course . "' | 
				
			||||||
 | 
					        AND user_id='" . $user . "';"; | 
				
			||||||
 | 
					    Database::query($sql); | 
				
			||||||
 | 
					    if (Database::affected_rows() > 0) { | 
				
			||||||
 | 
					        return true; | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        return false; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function checkUserCourseTransference($course, $user) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourseTemporal = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); | 
				
			||||||
 | 
					    $sql = "SELECT 1 FROM $tableBuyCourseTemporal | 
				
			||||||
 | 
					        WHERE course_code='" . $course . "' | 
				
			||||||
 | 
					        AND user_id='" . $user . "';"; | 
				
			||||||
 | 
					    Database::query($sql); | 
				
			||||||
 | 
					    if (Database::affected_rows() > 0) { | 
				
			||||||
 | 
					        return true; | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        return false; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function listCategories() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tblCourseCategory = Database::get_main_table(TABLE_MAIN_CATEGORY); | 
				
			||||||
 | 
					    $sql = "SELECT code, name FROM $tblCourseCategory"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $aux = array(); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        $aux[] = $row; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $aux; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Return an icon representing the visibility of the course | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					function getCourseVisibilityIcon($option) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $style = 'margin-bottom:-5px;margin-right:5px;'; | 
				
			||||||
 | 
					    switch ($option) { | 
				
			||||||
 | 
					        case 0: | 
				
			||||||
 | 
					            return Display::return_icon('bullet_red.gif', get_lang('CourseVisibilityClosed'), array('style' => $style)); | 
				
			||||||
 | 
					            break; | 
				
			||||||
 | 
					        case 1: | 
				
			||||||
 | 
					            return Display::return_icon('bullet_orange.gif', get_lang('Private'), array('style' => $style)); | 
				
			||||||
 | 
					            break; | 
				
			||||||
 | 
					        case 2: | 
				
			||||||
 | 
					            return Display::return_icon('bullet_green.gif', get_lang('OpenToThePlatform'), array('style' => $style)); | 
				
			||||||
 | 
					            break; | 
				
			||||||
 | 
					        case 3: | 
				
			||||||
 | 
					            return Display::return_icon('bullet_blue.gif', get_lang('OpenToTheWorld'), array('style' => $style)); | 
				
			||||||
 | 
					            break; | 
				
			||||||
 | 
					        default: | 
				
			||||||
 | 
					            return ''; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function listCurrency() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourseCountry = Database::get_main_table(TABLE_BUY_COURSE_COUNTRY); | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCourseCountry | 
				
			||||||
 | 
					        ORDER BY country_name ASC"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $aux = array(); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        $aux[] = $row; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $aux; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function listAccounts() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourseTransference = Database::get_main_table(TABLE_BUY_COURSE_TRANSFERENCE); | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCourseTransference"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $aux = array(); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        $aux[] = $row; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $aux; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function paypalParameters() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCoursePaypal = Database::get_main_table(TABLE_BUY_COURSE_PAYPAL); | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCoursePaypal"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $row; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function transferenceParameters() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourseTransference = Database::get_main_table(TABLE_BUY_COURSE_TRANSFERENCE); | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCourseTransference"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $aux = array(); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        $aux[] = $row; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $aux; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function findCurrency() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourseCountry = Database::get_main_table(TABLE_BUY_COURSE_COUNTRY); | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCourseCountry WHERE status='1';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $row['currency_code']; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function courseInfo($code) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourse = Database::get_main_table(TABLE_BUY_COURSE); | 
				
			||||||
 | 
					    $tableCourseRelUser = Database::get_main_table(TABLE_MAIN_COURSE_USER); | 
				
			||||||
 | 
					    $tableUser = Database::get_main_table(TABLE_MAIN_USER); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $sql = "SELECT a.id_course, a.visible, a.price, b.* | 
				
			||||||
 | 
					        FROM $tableBuyCourse a, course b | 
				
			||||||
 | 
					        WHERE a.id_course=b.id | 
				
			||||||
 | 
					        AND a.visible = 1 | 
				
			||||||
 | 
					        AND b.id = '" . $code . "';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					    // Check teacher | 
				
			||||||
 | 
					    $sql = "SELECT lastname, firstname | 
				
			||||||
 | 
					        FROM $tableCourseRelUser a, $tableUser b | 
				
			||||||
 | 
					        WHERE a.course_code = '" . $row['code'] . "' | 
				
			||||||
 | 
					        AND a.role <> '' AND a.role <> 'NULL' | 
				
			||||||
 | 
					        AND a.user_id = b.user_id;"; | 
				
			||||||
 | 
					    $tmp = Database::query($sql); | 
				
			||||||
 | 
					    $rowTmp = Database::fetch_assoc($tmp); | 
				
			||||||
 | 
					    $row['teacher'] = $rowTmp['firstname'] . ' ' . $rowTmp['lastname']; | 
				
			||||||
 | 
					    //Check if student is enrolled | 
				
			||||||
 | 
					    if (isset($_SESSION['_user']) || $_SESSION['_user']['user_id'] != '') { | 
				
			||||||
 | 
					        $sql = "SELECT 1 FROM $tableCourseRelUser | 
				
			||||||
 | 
					            WHERE course_code='" . $row['code'] . "' | 
				
			||||||
 | 
					            AND user_id='" . $_SESSION['_user']['user_id'] . "';"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					        if (Database::affected_rows() > 0) { | 
				
			||||||
 | 
					            $row['enrolled'] = "YES"; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $row['enrolled'] = "NO"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $row['enrolled'] = "NO"; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    //check img | 
				
			||||||
 | 
					    if (file_exists("../../courses/" . $row['code'] . "/course-pic85x85.png")) { | 
				
			||||||
 | 
					        $row['course_img'] = "courses/" . $row['code'] . "/course-pic85x85.png"; | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $row['course_img'] = "main/img/without_picture.png"; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    $row['price'] = number_format($row['price'], 2, '.', ' '); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $row; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function randomText($long = 6, $minWords = true, $maxWords = true, $number = true) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $salt = $minWords ? 'abchefghknpqrstuvwxyz' : ''; | 
				
			||||||
 | 
					    $salt .= $maxWords ? 'ACDEFHKNPRSTUVWXYZ' : ''; | 
				
			||||||
 | 
					    $salt .= $number ? (strlen($salt) ? '2345679' : '0123456789') : ''; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (strlen($salt) == 0) { | 
				
			||||||
 | 
					        return ''; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $i = 0; | 
				
			||||||
 | 
					    $str = ''; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    srand((double)microtime() * 1000000); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while ($i < $long) { | 
				
			||||||
 | 
					        $number = rand(0, strlen($salt) - 1); | 
				
			||||||
 | 
					        $str .= substr($salt, $number, 1); | 
				
			||||||
 | 
					        $i++; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $str; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function calculateReference() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourseTemporal = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); | 
				
			||||||
 | 
					    $sql = "SELECT MAX(cod) as cod FROM $tableBuyCourseTemporal"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					    if ($row['cod'] != '') { | 
				
			||||||
 | 
					        $reference = $row['cod']; | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $reference = '1'; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    $randomText = randomText(); | 
				
			||||||
 | 
					    $reference .= $randomText; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $reference; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function pendingList() | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $tableBuyCourseTemporal = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCourseTemporal;"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $aux = array(); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        $aux[] = $row; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $aux; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,63 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Description of buy_courses_plugin | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * @copyright (c) 2013 Nosolored | 
				
			||||||
 | 
					 * @author Jose Angel Ruiz    <jaruiz@nosolored.com> | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					class Buy_CoursesPlugin extends Plugin | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * @return StaticPlugin | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    static function create() | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        static $result = null; | 
				
			||||||
 | 
					        return $result ? $result : $result = new self(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function __construct() | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        parent::__construct('1.0', 'Jose Angel Ruiz, Francis Gonzales', array('paypal_enable' => 'boolean', 'transference_enable' => 'boolean', 'unregistered_users_enable' => 'boolean')); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * This method creates the tables required to this plugin | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    function install() | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        require_once api_get_path(SYS_PLUGIN_PATH) . 'buy_courses/database.php'; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * This method drops the plugin tables | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    function uninstall() | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        $table = Database::get_main_table(TABLE_BUY_COURSE); | 
				
			||||||
 | 
					        $sql = "DROP TABLE IF EXISTS $table"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					    | 
				
			||||||
 | 
					        $table = Database::get_main_table(TABLE_BUY_COURSE_COUNTRY); | 
				
			||||||
 | 
					        $sql = "DROP TABLE IF EXISTS $table"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $table = Database::get_main_table(TABLE_BUY_COURSE_PAYPAL); | 
				
			||||||
 | 
					        $sql = "DROP TABLE IF EXISTS $table"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $table = Database::get_main_table(TABLE_BUY_COURSE_TRANSFERENCE); | 
				
			||||||
 | 
					        $sql = "DROP TABLE IF EXISTS $table"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $table = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); | 
				
			||||||
 | 
					        $sql = "DROP TABLE IF EXISTS $table"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $table = Database::get_main_table(TABLE_BUY_COURSE_SALE); | 
				
			||||||
 | 
					        $sql = "DROP TABLE IF EXISTS $table"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,46 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Initialization | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/buy_course.lib.php'; | 
				
			||||||
 | 
					require_once '../../../main/inc/global.inc.php'; | 
				
			||||||
 | 
					require_once 'buy_course_plugin.class.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$_cid = 0; | 
				
			||||||
 | 
					$templateName = $plugin->get_lang('AvailableCourses'); | 
				
			||||||
 | 
					$interbreadcrumb[] = array("url" => "list.php", "name" => $plugin->get_lang('CourseListOnSale')); | 
				
			||||||
 | 
					$interbreadcrumb[] = array("url" => "paymentsetup.php", "name" => get_lang('Configuration')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tpl = new Template($templateName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$teacher = api_is_platform_admin(); | 
				
			||||||
 | 
					api_protect_course_script(true); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($teacher) { | 
				
			||||||
 | 
					    // sync course table with the plugin | 
				
			||||||
 | 
					    sync(); | 
				
			||||||
 | 
					    $visibility = array(); | 
				
			||||||
 | 
					    $visibility[] = getCourseVisibilityIcon('0'); | 
				
			||||||
 | 
					    $visibility[] = getCourseVisibilityIcon('1'); | 
				
			||||||
 | 
					    $visibility[] = getCourseVisibilityIcon('2'); | 
				
			||||||
 | 
					    $visibility[] = getCourseVisibilityIcon('3'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $coursesList = listCourses(); | 
				
			||||||
 | 
					    $confirmationImgPath = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/message_confirmation.png'; | 
				
			||||||
 | 
					    $saveImgPath = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/save.png'; | 
				
			||||||
 | 
					    $currencyType = findCurrency(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $tpl->assign('server', $_configuration['root_web']); | 
				
			||||||
 | 
					    $tpl->assign('courses', $coursesList); | 
				
			||||||
 | 
					    $tpl->assign('visibility', $visibility); | 
				
			||||||
 | 
					    $tpl->assign('confirmation_img', $confirmationImgPath); | 
				
			||||||
 | 
					    $tpl->assign('save_img', $saveImgPath); | 
				
			||||||
 | 
					    $tpl->assign('currency', $currencyType); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $listing_tpl = 'buy_courses/view/configuration.tpl'; | 
				
			||||||
 | 
					    $content = $tpl->fetch($listing_tpl); | 
				
			||||||
 | 
					    $tpl->assign('content', $content); | 
				
			||||||
 | 
					    $tpl->display_one_col_template(); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,18 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					$course_plugin = 'buy_courses'; | 
				
			||||||
 | 
					require_once 'buy_course.lib.php'; | 
				
			||||||
 | 
					require_once 'buy_course_plugin.class.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unset($_SESSION['bc_user_id']); | 
				
			||||||
 | 
					unset($_SESSION['bc_registered']); | 
				
			||||||
 | 
					unset($_SESSION['bc_course_code']); | 
				
			||||||
 | 
					unset($_SESSION['bc_course_title']); | 
				
			||||||
 | 
					unset($_SESSION['Payment_Amount']); | 
				
			||||||
 | 
					unset($_SESSION['currencyCodeType']); | 
				
			||||||
 | 
					unset($_SESSION['PaymentType']); | 
				
			||||||
 | 
					unset($_SESSION['nvpReqArray']); | 
				
			||||||
 | 
					unset($_SESSION['TOKEN']); | 
				
			||||||
 | 
					$_SESSION['bc_success'] = false; | 
				
			||||||
 | 
					$_SESSION['bc_message'] = 'CancelOrder'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header('Location:list.php'); | 
				
			||||||
@ -0,0 +1,41 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once 'paypalfunctions.php'; | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * PayPal Express Checkout Module | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * The paymentAmount is the total value of | 
				
			||||||
 | 
					 * the shopping cart, that was set | 
				
			||||||
 | 
					 * earlier in a session variable | 
				
			||||||
 | 
					 * by the shopping cart page | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					$paymentAmount = $_SESSION["Payment_Amount"]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * The currencyCodeType and paymentType | 
				
			||||||
 | 
					 * are set to the selections made on the Integration Assistant | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					$paymentType = "Sale"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Calls the SetExpressCheckout API call | 
				
			||||||
 | 
					 * The CallShortcutExpressCheckout function is defined in the file PayPalFunctions.php, | 
				
			||||||
 | 
					 * it is included at the top of this file. | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					$resArray = CallShortcutExpressCheckout($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL); | 
				
			||||||
 | 
					$ack = strtoupper($resArray["ACK"]); | 
				
			||||||
 | 
					if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { | 
				
			||||||
 | 
					    RedirectToPayPal($resArray["TOKEN"]); | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    //Display a user friendly Error on the page using any of the following error information returned by PayPal | 
				
			||||||
 | 
					    $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); | 
				
			||||||
 | 
					    $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); | 
				
			||||||
 | 
					    $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); | 
				
			||||||
 | 
					    $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "SetExpressCheckout API call failed. "; | 
				
			||||||
 | 
					    echo "Detailed Error Message: " . $ErrorLongMsg; | 
				
			||||||
 | 
					    echo "Short Error Message: " . $ErrorShortMsg; | 
				
			||||||
 | 
					    echo "Error Code: " . $ErrorCode; | 
				
			||||||
 | 
					    echo "Error Severity Code: " . $ErrorSeverityCode; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,310 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once '../config.php'; | 
				
			||||||
 | 
					require_once 'buy_course.lib.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'mail.lib.inc.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'course.lib.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tableBuyCourse = Database::get_main_table(TABLE_BUY_COURSE); | 
				
			||||||
 | 
					$tableBuyCourseCountry = Database::get_main_table(TABLE_BUY_COURSE_COUNTRY); | 
				
			||||||
 | 
					$tableBuyCoursePaypal = Database::get_main_table(TABLE_BUY_COURSE_PAYPAL); | 
				
			||||||
 | 
					$tableBuyCourseTransference = Database::get_main_table(TABLE_BUY_COURSE_TRANSFERENCE); | 
				
			||||||
 | 
					$tableBuyCourseTemporal = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); | 
				
			||||||
 | 
					$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); | 
				
			||||||
 | 
					$tableCourseRelUser = Database::get_main_table(TABLE_MAIN_COURSE_USER); | 
				
			||||||
 | 
					$tableUser = Database::get_main_table(TABLE_MAIN_USER); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					$buy_name = $plugin->get_lang('Buy'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'sync') { | 
				
			||||||
 | 
					    $sql = "SELECT code, title FROM $tableCourse;"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        $aux_code .= $row['code']; | 
				
			||||||
 | 
					        $aux_title .= $row['title']; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    echo json_encode(array("status" => "true", "content" => $content)); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'courses_filter') { | 
				
			||||||
 | 
					    $course = Database::escape_string($_REQUEST['course']); | 
				
			||||||
 | 
					    $priceMin = Database::escape_string($_REQUEST['pricemin']); | 
				
			||||||
 | 
					    $priceMax = Database::escape_string($_REQUEST['pricemax']); | 
				
			||||||
 | 
					    $show = Database::escape_string($_REQUEST['show']); | 
				
			||||||
 | 
					    $category = Database::escape_string($_REQUEST['category']); | 
				
			||||||
 | 
					    $server = Database::escape_string($_configuration['root_web']); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $filter = ''; | 
				
			||||||
 | 
					    if ($course != '') { | 
				
			||||||
 | 
					        $filter .= "b.title LIKE '%" . $course . "%'"; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    if ($priceMin != '') { | 
				
			||||||
 | 
					        if ($filter == '') { | 
				
			||||||
 | 
					            $filter .= "a.price >= '" . $priceMin . "'"; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $filter .= " AND a.price >= '" . $priceMin . "'"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($priceMax != '') { | 
				
			||||||
 | 
					        if ($filter == '') { | 
				
			||||||
 | 
					            $filter .= "a.price <= '" . $priceMax . "'"; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $filter .= " AND a.price <= '" . $priceMax . "'"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($category != '') { | 
				
			||||||
 | 
					        if ($filter == '') { | 
				
			||||||
 | 
					            $filter .= "b.category_code='" . $category . "'"; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $filter .= " AND b.category_code='" . $category . "'"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($filter == '') { | 
				
			||||||
 | 
					        $sql = "SELECT a.id_course, a.visible, a.price, b.* | 
				
			||||||
 | 
					            FROM $tableBuyCourse a, $tableCourse b | 
				
			||||||
 | 
					            WHERE a.id_course = b.id | 
				
			||||||
 | 
					            AND a.visible = 1;"; | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $sql = "SELECT a.id_course, a.visible, a.price, b.* | 
				
			||||||
 | 
					            FROM $tableBuyCourse a, $tableCourse b | 
				
			||||||
 | 
					            WHERE a.id_course = b.id | 
				
			||||||
 | 
					            AND a.visible = 1 AND " . $filter . ";"; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $aux = array(); | 
				
			||||||
 | 
					    while ($row = Database::fetch_assoc($res)) { | 
				
			||||||
 | 
					        //Check teacher | 
				
			||||||
 | 
					        $sql = "SELECT lastname, firstname | 
				
			||||||
 | 
					            FROM $tableCourseRelUser a, $tableUser b | 
				
			||||||
 | 
					            WHERE a.course_code = '" . $row['code'] . "' | 
				
			||||||
 | 
					            AND a.role <> '' | 
				
			||||||
 | 
					            AND a.role <> 'NULL' | 
				
			||||||
 | 
					            AND a.user_id = b.user_id;"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $tmp = Database::query($sql); | 
				
			||||||
 | 
					        $rowTmp = Database::fetch_assoc($tmp); | 
				
			||||||
 | 
					        $row['teacher'] = $rowTmp['firstname'] . ' ' . $rowTmp['lastname']; | 
				
			||||||
 | 
					        //Check if the student is enrolled | 
				
			||||||
 | 
					        if (isset($_SESSION['_user']) || $_SESSION['_user']['user_id'] != '') { | 
				
			||||||
 | 
					            $sql = "SELECT 1 FROM $tableCourseRelUser | 
				
			||||||
 | 
					                WHERE course_code = '" . $row['code'] . "' | 
				
			||||||
 | 
					                AND user_id = " . intval($_SESSION['_user']['user_id']) . ";"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $tmp = Database::query($sql); | 
				
			||||||
 | 
					            if (Database::affected_rows() > 0) { | 
				
			||||||
 | 
					                $row['enrolled'] = "YES"; | 
				
			||||||
 | 
					            } else { | 
				
			||||||
 | 
					                $row['enrolled'] = "NO"; | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $row['enrolled'] = "NO"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        // Check img | 
				
			||||||
 | 
					        if (file_exists("../../../courses/" . $row['code'] . "/course-pic85x85.png")) { | 
				
			||||||
 | 
					            $row['course_img'] = "courses/" . $row['code'] . "/course-pic85x85.png"; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $row['course_img'] = "main/img/without_picture.png"; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($show == "YES" && $row['enrolled'] == "YES") { | 
				
			||||||
 | 
					            ; | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            $aux[] = $row; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    $currencyType = findCurrency(); | 
				
			||||||
 | 
					    foreach ($aux as $course) { | 
				
			||||||
 | 
					        $content .= '<div class="well_border span8">'; | 
				
			||||||
 | 
					        $content .= '<div class="row">'; | 
				
			||||||
 | 
					        $content .= '<div class="span">'; | 
				
			||||||
 | 
					        $content .= '<div class="thumbnail">'; | 
				
			||||||
 | 
					        $content .= '<a class="ajax" rel="gb_page_center[778]" title="" href="' . $server . 'main/inc/ajax/course_home.ajax.php?a=show_course_information&code=' . $course['code'] . '">'; | 
				
			||||||
 | 
					        $content .= '<img alt="" src="' . $server . $course['course_img'] . '">'; | 
				
			||||||
 | 
					        $content .= '</a>'; | 
				
			||||||
 | 
					        $content .= '</div>'; | 
				
			||||||
 | 
					        $content .= '</div>'; | 
				
			||||||
 | 
					        $content .= '<div class="span4">'; | 
				
			||||||
 | 
					        $content .= '<div class="categories-course-description">'; | 
				
			||||||
 | 
					        $content .= '<h3>' . $course['title'] . '</h3>'; | 
				
			||||||
 | 
					        $content .= '<h5>' . get_lang('Teacher') . ': ' . $course['teacher'] . '</h5>'; | 
				
			||||||
 | 
					        $content .= '</div>'; | 
				
			||||||
 | 
					        if ($course['enrolled'] == "YES") { | 
				
			||||||
 | 
					            $content .= '<span class="label label-info">' .  $plugin->get_lang('TheUserIsAlreadyRegistered') . '</span>'; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        $content .= '</div>'; | 
				
			||||||
 | 
					        $content .= '<div class="span right">'; | 
				
			||||||
 | 
					        $content .= '<div class="sprice right">' . $course['price'] . ' ' . $currencyType . ' </div>'; | 
				
			||||||
 | 
					        $content .= '<div class="cleared"></div>'; | 
				
			||||||
 | 
					        $content .= '<div class="btn-toolbar right">'; | 
				
			||||||
 | 
					        $content .= '<a class="ajax btn btn-primary" title="" href="' . $server . 'main/inc/ajax/course_home.ajax.php?a=show_course_information&code=' . $course['code'] . '">' . get_lang('Description') . '</a> '; | 
				
			||||||
 | 
					        if ($course['enrolled'] != "YES") { | 
				
			||||||
 | 
					            $content .= '<a class="btn btn-success" title="" href="' . $server . 'plugin/buy_courses/src/process.php?code=' . $course['id'] . '">' . $buy_name . '</a>'; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        $content .= '</div>'; | 
				
			||||||
 | 
					        $content .= '</div>'; | 
				
			||||||
 | 
					        $content .= '</div>'; | 
				
			||||||
 | 
					        $content .= '</div>'; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo json_encode(array("status" => "true", "content" => $content)); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'save_currency') { | 
				
			||||||
 | 
					    $id = $_REQUEST['currency']; | 
				
			||||||
 | 
					    $sql = "UPDATE $tableBuyCourseCountry SET status='0';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $sql = "UPDATE $tableBuyCourseCountry SET status='1' WHERE id_country='" . $id . "';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    if (!res) { | 
				
			||||||
 | 
					        $content = $plugin->get_lang('ProblemToSaveTheCurrencyType') . Database::error(); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "false", "content" => $content)); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $content = get_lang('Saved'); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "true", "content" => $content)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'save_paypal') { | 
				
			||||||
 | 
					    $username = Database::escape_string($_REQUEST['username']); | 
				
			||||||
 | 
					    $password = Database::escape_string($_REQUEST['password']); | 
				
			||||||
 | 
					    $signature = Database::escape_string($_REQUEST['signature']); | 
				
			||||||
 | 
					    $sandbox = Database::escape_string($_REQUEST['sandbox']); | 
				
			||||||
 | 
					    $sql = "UPDATE $tableBuyCoursePaypal | 
				
			||||||
 | 
					        SET sandbox = '" . $sandbox . "', | 
				
			||||||
 | 
					        username = '" . $username . "', | 
				
			||||||
 | 
					        password = '" . $password . "', | 
				
			||||||
 | 
					        signature = '" . $signature . "' | 
				
			||||||
 | 
					        WHERE id = '1';"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    if (!res) { | 
				
			||||||
 | 
					        $content = $plugin->get_lang('ProblemToSaveThePaypalParameters') . Database::error(); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "false", "content" => $content)); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $content = get_lang('Saved'); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "true", "content" => $content)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'add_account') { | 
				
			||||||
 | 
					    $name = Database::escape_string($_REQUEST['name']); | 
				
			||||||
 | 
					    $account = Database::escape_string($_REQUEST['account']); | 
				
			||||||
 | 
					    $swift = Database::escape_string($_REQUEST['swift']); | 
				
			||||||
 | 
					    $sql = "INSERT INTO $tableBuyCourseTransference (name, account, swift) | 
				
			||||||
 | 
					        VALUES ('" . $name . "','" . $account . "', '" . $swift . "');"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    if (!res) { | 
				
			||||||
 | 
					        $content = $plugin->get_lang('ProblemToInsertANewAccount') . Database::error(); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "false", "content" => $content)); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $content = get_lang('Saved'); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "true", "content" => $content)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'delete_account') { | 
				
			||||||
 | 
					    $_REQUEST['id'] = intval($_REQUEST['id']); | 
				
			||||||
 | 
					    $id = $_REQUEST['id']; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $sql = "DELETE FROM $tableBuyCourseTransference WHERE id='" . $id . "';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    if (!res) { | 
				
			||||||
 | 
					        $content = $plugin->get_lang('ProblemToDeleteTheAccount') . Database::error(); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "false", "content" => $content)); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $content = get_lang('Saved'); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "true", "content" => $content)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'save_mod') { | 
				
			||||||
 | 
					    $_REQUEST['id'] = Database::escape_string($_REQUEST['id']); | 
				
			||||||
 | 
					    $idCourse = intval($_REQUEST['id_course']); | 
				
			||||||
 | 
					    $visible = ($_REQUEST['visible'] == "checked") ? 1 : 0; | 
				
			||||||
 | 
					    $price = Database::escape_string($_REQUEST['price']); | 
				
			||||||
 | 
					    $obj = $_REQUEST['obj']; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $sql = "UPDATE $tableBuyCourse | 
				
			||||||
 | 
					        SET visible = " . $visible . ", | 
				
			||||||
 | 
					        price = '" . $price . "' | 
				
			||||||
 | 
					        WHERE id_course = '" . $idCourse . "';"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    if (!res) { | 
				
			||||||
 | 
					        $content = $plugin->get_lang('ProblemToSaveTheMessage') . Database::error(); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "false", "content" => $content)); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        echo json_encode(array("status" => "true", "id_course" => $idCourse)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'unset_variables') { | 
				
			||||||
 | 
					    unset($_SESSION['bc_user_id']); | 
				
			||||||
 | 
					    unset($_SESSION['bc_registered']); | 
				
			||||||
 | 
					    unset($_SESSION['bc_course_code']); | 
				
			||||||
 | 
					    unset($_SESSION['bc_course_title']); | 
				
			||||||
 | 
					    unset($_SESSION["Payment_Amount"]); | 
				
			||||||
 | 
					    unset($_SESSION["currencyCodeType"]); | 
				
			||||||
 | 
					    unset($_SESSION["PaymentType"]); | 
				
			||||||
 | 
					    unset($_SESSION["nvpReqArray"]); | 
				
			||||||
 | 
					    unset($_SESSION['TOKEN']); | 
				
			||||||
 | 
					    $_SESSION['bc_success'] = false; | 
				
			||||||
 | 
					    $_SESSION['bc_message'] = 'CancelOrder'; | 
				
			||||||
 | 
					    unset($_SESSION['bc_url']); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'clear_order') { | 
				
			||||||
 | 
					    $_REQUEST['id'] = intval($_REQUEST['id']); | 
				
			||||||
 | 
					    $id = substr($_REQUEST['id'], 6); | 
				
			||||||
 | 
					    $sql = "DELETE FROM $tableBuyCourseTemporal WHERE cod='" . $id . "';"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    if (!res) { | 
				
			||||||
 | 
					        $content = $plugin->get_lang('ProblemToDeleteTheAccount') . Database::error(); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "false", "content" => $content)); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $content = get_lang('Saved'); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "true", "content" => $content)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_REQUEST['tab'] == 'confirm_order') { | 
				
			||||||
 | 
					    $_REQUEST['id'] = intval($_REQUEST['id']); | 
				
			||||||
 | 
					    $id = substr($_REQUEST['id'], 6); | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCourseTemporal WHERE cod='" . $id . "';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $isAllowed = false; | 
				
			||||||
 | 
					    $user_id = $row['user_id']; | 
				
			||||||
 | 
					    $course_code = $row['course_code']; | 
				
			||||||
 | 
					    $all_course_information = CourseManager::get_course_information($course_code); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (CourseManager::subscribe_user($user_id, $course_code)) { | 
				
			||||||
 | 
					        $isAllowed = true; | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $isAllowed = false; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    //Activate user account | 
				
			||||||
 | 
					    if ($isAllowed) { | 
				
			||||||
 | 
					        // 1. set account inactive | 
				
			||||||
 | 
					        $sql = "UPDATE $tableUser SET active = '1' WHERE user_id = " . intval($_SESSION['bc_user_id']) . ""; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $sql = "DELETE FROM $tableBuyCourseTemporal WHERE cod='" . $id . "';"; | 
				
			||||||
 | 
					        $res = Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $content = $plugin->get_lang('TheSubscriptionAndActivationWereDoneSuccessfully'); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "true", "content" => $content)); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $content = $plugin->get_lang('ProblemToSubscribeTheUser'); | 
				
			||||||
 | 
					        echo json_encode(array("status" => "false", "content" => $content)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,25 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @package chamilo.plugin.themeselect | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					$guess_enable = $plugin->get('unregistered_users_enable'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($guess_enable == "true" || isset($_SESSION['_user'])) { | 
				
			||||||
 | 
					    $title = $plugin->get_lang('CourseListOnSale'); | 
				
			||||||
 | 
					    $templateName = $plugin->get_lang('BuyCourses'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $tpl = new Template($templateName); | 
				
			||||||
 | 
					    $tpl->assign('isAdmin', api_is_platform_admin()); | 
				
			||||||
 | 
					    $tpl->assign('title', $title); | 
				
			||||||
 | 
					    $tpl->assign('BuyCourses', $templateName); | 
				
			||||||
 | 
					    $tpl->assign('ConfigurationOfCoursesAndPrices', $plugin->get_lang('ConfigurationOfCoursesAndPrices')); | 
				
			||||||
 | 
					    $tpl->assign('ConfigurationOfPayments', $plugin->get_lang('ConfigurationOfPayments')); | 
				
			||||||
 | 
					    $tpl->assign('OrdersPendingOfPayment', $plugin->get_lang('OrdersPendingOfPayment')); | 
				
			||||||
 | 
					    $listing_tpl = 'buy_courses/view/index.tpl'; | 
				
			||||||
 | 
					    $content = $tpl->fetch($listing_tpl); | 
				
			||||||
 | 
					    $tpl->assign('content', $content); | 
				
			||||||
 | 
					    $tpl->display_one_col_template(); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					  | 
				
			||||||
@ -0,0 +1 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
@ -0,0 +1,336 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/* For licensing terms, see /license.txt */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * This script displays a form for registering new users. | 
				
			||||||
 | 
					 * @package  chamilo.auth | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use ChamiloSession as Session; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$language_file = array('registration', 'admin'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!empty($_POST['language'])) { //quick hack to adapt the registration form result to the selected registration language | 
				
			||||||
 | 
					    $_GET['language'] = $_POST['language']; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					require_once '../config.php'; | 
				
			||||||
 | 
					require_once api_get_path(CONFIGURATION_PATH) . 'profile.conf.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'mail.lib.inc.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!empty($_SESSION['user_language_choice'])) { | 
				
			||||||
 | 
					    $user_selected_language = $_SESSION['user_language_choice']; | 
				
			||||||
 | 
					} elseif (!empty($_SESSION['_user']['language'])) { | 
				
			||||||
 | 
					    $user_selected_language = $_SESSION['_user']['language']; | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    $user_selected_language = get_setting('platformLanguage'); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$form = new FormValidator('registration'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (api_get_setting('allow_terms_conditions') == 'true') { | 
				
			||||||
 | 
					    $user_already_registered_show_terms = isset($_SESSION['term_and_condition']['user_id']); | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    $user_already_registered_show_terms = false; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//Direct Link Subscription feature #5299 | 
				
			||||||
 | 
					$course_code_redirect = isset($_REQUEST['c']) && !empty($_REQUEST['c']) ? $_REQUEST['c'] : null; | 
				
			||||||
 | 
					$exercise_redirect = isset($_REQUEST['e']) && !empty($_REQUEST['e']) ? $_REQUEST['e'] : null; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!empty($course_code_redirect)) { | 
				
			||||||
 | 
					    Session::write('course_redirect', $course_code_redirect); | 
				
			||||||
 | 
					    Session::write('exercise_redirect', $exercise_redirect); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($user_already_registered_show_terms == false) { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (api_is_western_name_order()) { | 
				
			||||||
 | 
					        //	FIRST NAME and LAST NAME | 
				
			||||||
 | 
					        $form->addElement('text', 'firstname', get_lang('FirstName'), array('size' => 40)); | 
				
			||||||
 | 
					        $form->addElement('text', 'lastname', get_lang('LastName'), array('size' => 40)); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        //	LAST NAME and FIRST NAME | 
				
			||||||
 | 
					        $form->addElement('text', 'lastname', get_lang('LastName'), array('size' => 40)); | 
				
			||||||
 | 
					        $form->addElement('text', 'firstname', get_lang('FirstName'), array('size' => 40)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    $form->applyFilter(array('lastname', 'firstname'), 'trim'); | 
				
			||||||
 | 
					    $form->addRule('lastname', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					    $form->addRule('firstname', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //	EMAIL | 
				
			||||||
 | 
					    $form->addElement('text', 'email', get_lang('Email'), array('size' => 40)); | 
				
			||||||
 | 
					    if (api_get_setting('registration', 'email') == 'true') { | 
				
			||||||
 | 
					        $form->addRule('email', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (api_get_setting('login_is_email') == 'true') { | 
				
			||||||
 | 
					        $form->applyFilter('email', 'trim'); | 
				
			||||||
 | 
					        if (api_get_setting('registration', 'email') != 'true') { | 
				
			||||||
 | 
					            $form->addRule('email', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        $form->addRule('email', sprintf(get_lang('UsernameMaxXCharacters'), (string)USERNAME_MAX_LENGTH), 'maxlength', USERNAME_MAX_LENGTH); | 
				
			||||||
 | 
					        $form->addRule('email', get_lang('UserTaken'), 'username_available'); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $form->addRule('email', get_lang('EmailWrong'), 'email'); | 
				
			||||||
 | 
					    if (api_get_setting('openid_authentication') == 'true') { | 
				
			||||||
 | 
					        $form->addElement('text', 'openid', get_lang('OpenIDURL'), array('size' => 40)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //	USERNAME | 
				
			||||||
 | 
					    if (api_get_setting('login_is_email') != 'true') { | 
				
			||||||
 | 
					        $form->addElement('text', 'username', get_lang('UserName'), array('size' => USERNAME_MAX_LENGTH)); | 
				
			||||||
 | 
					        $form->applyFilter('username', 'trim'); | 
				
			||||||
 | 
					        $form->addRule('username', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					        $form->addRule('username', sprintf(get_lang('UsernameMaxXCharacters'), (string)USERNAME_MAX_LENGTH), 'maxlength', USERNAME_MAX_LENGTH); | 
				
			||||||
 | 
					        $form->addRule('username', get_lang('UsernameWrong'), 'username'); | 
				
			||||||
 | 
					        $form->addRule('username', get_lang('UserTaken'), 'username_available'); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //	PASSWORD | 
				
			||||||
 | 
					    $form->addElement('password', 'pass1', get_lang('Pass'), array('size' => 20, 'autocomplete' => 'off')); | 
				
			||||||
 | 
					    $form->addElement('password', 'pass2', get_lang('Confirmation'), array('size' => 20, 'autocomplete' => 'off')); | 
				
			||||||
 | 
					    $form->addRule('pass1', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					    $form->addRule('pass2', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					    $form->addRule(array('pass1', 'pass2'), get_lang('PassTwo'), 'compare'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (CHECK_PASS_EASY_TO_FIND) { | 
				
			||||||
 | 
					        $form->addRule('password1', get_lang('PassTooEasy') . ': ' . api_generate_password(), 'callback', 'api_check_password'); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //	PHONE | 
				
			||||||
 | 
					    $form->addElement('text', 'phone', get_lang('Phone'), array('size' => 20)); | 
				
			||||||
 | 
					    if (api_get_setting('registration', 'phone') == 'true') { | 
				
			||||||
 | 
					        $form->addRule('phone', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //	LANGUAGE | 
				
			||||||
 | 
					    if (api_get_setting('registration', 'language') == 'true') { | 
				
			||||||
 | 
					        $form->addElement('select_language', 'language', get_lang('Language')); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (isset($_SESSION['user_language_choice']) && $_SESSION['user_language_choice'] != '') { | 
				
			||||||
 | 
					    $defaults['language'] = $_SESSION['user_language_choice']; | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    $defaults['language'] = api_get_setting('platformLanguage'); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					if (!empty($_GET['username'])) { | 
				
			||||||
 | 
					    $defaults['username'] = Security::remove_XSS($_GET['username']); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					if (!empty($_GET['email'])) { | 
				
			||||||
 | 
					    $defaults['email'] = Security::remove_XSS($_GET['email']); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!empty($_GET['phone'])) { | 
				
			||||||
 | 
					    $defaults['phone'] = Security::remove_XSS($_GET['phone']); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (api_get_setting('openid_authentication') == 'true' && !empty($_GET['openid'])) { | 
				
			||||||
 | 
					    $defaults['openid'] = Security::remove_XSS($_GET['openid']); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					$defaults['status'] = STUDENT; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (is_array($extra_data)) { | 
				
			||||||
 | 
					    $defaults = array_merge($defaults, $extra_data); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$form->setDefaults($defaults); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$content = null; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (api_get_setting('allow_terms_conditions') == 'true') { | 
				
			||||||
 | 
					    $get = array_keys($_GET); | 
				
			||||||
 | 
					    if (isset($get)) { | 
				
			||||||
 | 
					        if ($get[0] == 'legal') { | 
				
			||||||
 | 
					            $language = api_get_interface_language(); | 
				
			||||||
 | 
					            $language = api_get_language_id($language); | 
				
			||||||
 | 
					            $term_preview = LegalManager::get_last_condition($language); | 
				
			||||||
 | 
					            if (!$term_preview) { | 
				
			||||||
 | 
					                //look for the default language | 
				
			||||||
 | 
					                $language = api_get_setting('platformLanguage'); | 
				
			||||||
 | 
					                $language = api_get_language_id($language); | 
				
			||||||
 | 
					                $term_preview = LegalManager::get_last_condition($language); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					            $tool_name = get_lang('TermsAndConditions'); | 
				
			||||||
 | 
					            Display :: display_header($tool_name); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!empty($term_preview['content'])) { | 
				
			||||||
 | 
					                echo $term_preview['content']; | 
				
			||||||
 | 
					            } else { | 
				
			||||||
 | 
					                echo get_lang('ComingSoon'); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					            Display :: display_footer(); | 
				
			||||||
 | 
					            exit; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tool_name = get_lang('Registration', null, (!empty($_POST['language']) ? $_POST['language'] : $_user['language'])); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (api_get_setting('allow_terms_conditions') == 'true' && $user_already_registered_show_terms) { | 
				
			||||||
 | 
					    $tool_name = get_lang('TermsAndConditions'); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$home = api_get_path(SYS_PATH) . 'home/'; | 
				
			||||||
 | 
					if (api_is_multiple_url_enabled()) { | 
				
			||||||
 | 
					    $access_url_id = api_get_current_access_url_id(); | 
				
			||||||
 | 
					    if ($access_url_id != -1) { | 
				
			||||||
 | 
					        $url_info = api_get_access_url($access_url_id); | 
				
			||||||
 | 
					        $url = api_remove_trailing_slash(preg_replace('/https?:\/\//i', '', $url_info['url'])); | 
				
			||||||
 | 
					        $clean_url = replace_dangerous_char($url); | 
				
			||||||
 | 
					        $clean_url = str_replace('/', '-', $clean_url); | 
				
			||||||
 | 
					        $clean_url .= '/'; | 
				
			||||||
 | 
					        $home_old = api_get_path(SYS_PATH) . 'home/'; | 
				
			||||||
 | 
					        $home = api_get_path(SYS_PATH) . 'home/' . $clean_url; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (file_exists($home . 'register_top_' . $user_selected_language . '.html')) { | 
				
			||||||
 | 
					    $home_top_temp = @(string)file_get_contents($home . 'register_top_' . $user_selected_language . '.html'); | 
				
			||||||
 | 
					    $open = str_replace('{rel_path}', api_get_path(REL_PATH), $home_top_temp); | 
				
			||||||
 | 
					    $open = api_to_system_encoding($open, api_detect_encoding(strip_tags($open))); | 
				
			||||||
 | 
					    if (!empty($open)) { | 
				
			||||||
 | 
					        $content = '<div class="well_border">' . $open . '</div>'; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$content .= Display::return_message(get_lang('YourAccountHasToBeApproved')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Terms and conditions | 
				
			||||||
 | 
					if (api_get_setting('allow_terms_conditions') == 'true') { | 
				
			||||||
 | 
					    $language = api_get_interface_language(); | 
				
			||||||
 | 
					    $language = api_get_language_id($language); | 
				
			||||||
 | 
					    $term_preview = LegalManager::get_last_condition($language); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!$term_preview) { | 
				
			||||||
 | 
					        //we load from the platform | 
				
			||||||
 | 
					        $language = api_get_setting('platformLanguage'); | 
				
			||||||
 | 
					        $language = api_get_language_id($language); | 
				
			||||||
 | 
					        $term_preview = LegalManager::get_last_condition($language); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //if is false we load from english | 
				
			||||||
 | 
					        if (!$term_preview) { | 
				
			||||||
 | 
					            $language = api_get_language_id('english'); //this must work | 
				
			||||||
 | 
					            $term_preview = LegalManager::get_last_condition($language); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Version and language | 
				
			||||||
 | 
					    $form->addElement('hidden', 'legal_accept_type', $term_preview['version'] . ':' . $term_preview['language_id']); | 
				
			||||||
 | 
					    $form->addElement('hidden', 'legal_info', $term_preview['legal_id'] . ':' . $term_preview['language_id']); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($term_preview['type'] == 1) { | 
				
			||||||
 | 
					        $form->addElement('checkbox', 'legal_accept', null, get_lang('IHaveReadAndAgree') . ' <a href="inscription.php?legal" target="_blank">' . get_lang('TermsAndConditions') . '</a>'); | 
				
			||||||
 | 
					        $form->addRule('legal_accept', get_lang('ThisFieldIsRequired'), 'required'); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $preview = LegalManager::show_last_condition($term_preview); | 
				
			||||||
 | 
					        $form->addElement('label', null, $preview); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$form->addElement('button', 'submit', get_lang('RegisterUser'), array('class' => 'btn btn-primary btn-large')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($form->validate()) { | 
				
			||||||
 | 
					    $values = $form->exportValues(); | 
				
			||||||
 | 
					    $values['username'] = api_substr($values['username'], 0, USERNAME_MAX_LENGTH); //make *sure* the login isn't too long | 
				
			||||||
 | 
					    $values['status'] = STUDENT; | 
				
			||||||
 | 
					    $values['official_code'] = api_strtoupper($values['username']); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (api_get_setting('login_is_email') == 'true') { | 
				
			||||||
 | 
					        $values['username'] = $values['email']; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Creates a new user | 
				
			||||||
 | 
					    $user_id = UserManager::create_user($values['firstname'], $values['lastname'], $values['status'], $values['email'], $values['username'], $values['pass1'], $values['official_code'], $values['language'], $values['phone'], $picture_uri, PLATFORM_AUTH_SOURCE, null, 1, 0, null, null, true); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Register extra fields | 
				
			||||||
 | 
					    $extras = array(); | 
				
			||||||
 | 
					    foreach ($values as $key => $value) { | 
				
			||||||
 | 
					        if (substr($key, 0, 6) == 'extra_') { //an extra field | 
				
			||||||
 | 
					            $extras[substr($key, 6)] = $value; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //update the extra fields | 
				
			||||||
 | 
					    $count_extra_field = count($extras); | 
				
			||||||
 | 
					    if ($count_extra_field > 0) { | 
				
			||||||
 | 
					        foreach ($extras as $key => $value) { | 
				
			||||||
 | 
					            UserManager::update_extra_field_value($user_id, $key, $value); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($user_id) { | 
				
			||||||
 | 
					        // storing the extended profile | 
				
			||||||
 | 
					        $store_extended = false; | 
				
			||||||
 | 
					        $sql = "UPDATE " . Database::get_main_table(TABLE_MAIN_USER) . " SET "; | 
				
			||||||
 | 
					        if (api_get_setting('extended_profile') == 'true' && api_get_setting('extendedprofile_registration', 'mycomptetences') == 'true') { | 
				
			||||||
 | 
					            $sql_set[] = "competences = '" . Database::escape_string($values['competences']) . "'"; | 
				
			||||||
 | 
					            $store_extended = true; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        if (api_get_setting('extended_profile') == 'true' && api_get_setting('extendedprofile_registration', 'mydiplomas') == 'true') { | 
				
			||||||
 | 
					            $sql_set[] = "diplomas = '" . Database::escape_string($values['diplomas']) . "'"; | 
				
			||||||
 | 
					            $store_extended = true; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        if (api_get_setting('extended_profile') == 'true' && api_get_setting('extendedprofile_registration', 'myteach') == 'true') { | 
				
			||||||
 | 
					            $sql_set[] = "teach = '" . Database::escape_string($values['teach']) . "'"; | 
				
			||||||
 | 
					            $store_extended = true; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        if (api_get_setting('extended_profile') == 'true' && api_get_setting('extendedprofile_registration', 'mypersonalopenarea') == 'true') { | 
				
			||||||
 | 
					            $sql_set[] = "openarea = '" . Database::escape_string($values['openarea']) . "'"; | 
				
			||||||
 | 
					            $store_extended = true; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        if ($store_extended) { | 
				
			||||||
 | 
					            $sql .= implode(',', $sql_set); | 
				
			||||||
 | 
					            $sql .= " WHERE user_id = '" . Database::escape_string($user_id) . "'"; | 
				
			||||||
 | 
					            Database::query($sql); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // if there is a default duration of a valid account then we have to change the expiration_date accordingly | 
				
			||||||
 | 
					        if (api_get_setting('account_valid_duration') != '') { | 
				
			||||||
 | 
					            $sql = "UPDATE " . Database::get_main_table(TABLE_MAIN_USER) . " SET expiration_date='registration_date+1' WHERE user_id='" . $user_id . "'"; | 
				
			||||||
 | 
					            Database::query($sql); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // if the account has to be approved then we set the account to inactive, sent a mail to the platform admin and exit the page. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $TABLE_USER = Database::get_main_table(TABLE_MAIN_USER); | 
				
			||||||
 | 
					        // 1. set account inactive | 
				
			||||||
 | 
					        $sql = "UPDATE " . $TABLE_USER . "	SET active='0' WHERE user_id='" . $user_id . "'"; | 
				
			||||||
 | 
					        Database::query($sql); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Terms & Conditions | 
				
			||||||
 | 
					    if (api_get_setting('allow_terms_conditions') == 'true') { | 
				
			||||||
 | 
					        // update the terms & conditions | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (isset($values['legal_accept_type'])) { | 
				
			||||||
 | 
					            $cond_array = explode(':', $values['legal_accept_type']); | 
				
			||||||
 | 
					            if (!empty($cond_array[0]) && !empty($cond_array[1])) { | 
				
			||||||
 | 
					                $time = time(); | 
				
			||||||
 | 
					                $condition_to_save = intval($cond_array[0]) . ':' . intval($cond_array[1]) . ':' . $time; | 
				
			||||||
 | 
					                UserManager::update_extra_field_value($user_id, 'legal_accept', $condition_to_save); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        $values = api_get_user_info($user_id); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* SESSION REGISTERING */ | 
				
			||||||
 | 
					    /* @todo move this in a function */ | 
				
			||||||
 | 
					    $_user['firstName'] = stripslashes($values['firstname']); | 
				
			||||||
 | 
					    $_user['lastName'] = stripslashes($values['lastname']); | 
				
			||||||
 | 
					    $_user['mail'] = $values['email']; | 
				
			||||||
 | 
					    $_user['language'] = $values['language']; | 
				
			||||||
 | 
					    $_user['user_id'] = $user_id; | 
				
			||||||
 | 
					    $_user['username'] = $values['username']; | 
				
			||||||
 | 
					    Session::write('bc_user', $_user); | 
				
			||||||
 | 
					    header('Location:process.php'); | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    Display :: display_header($tool_name); | 
				
			||||||
 | 
					    echo Display::page_header($tool_name); | 
				
			||||||
 | 
					    echo $content; | 
				
			||||||
 | 
					    $form->display(); | 
				
			||||||
 | 
					    Display :: display_footer(); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,55 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @package chamilo.plugin.buy_courses | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Initialization | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once '../../../main/inc/global.inc.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'plugin.class.php'; | 
				
			||||||
 | 
					require_once 'buy_course_plugin.class.php'; | 
				
			||||||
 | 
					require_once 'buy_course.lib.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$course_plugin = 'buy_courses'; | 
				
			||||||
 | 
					$plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					$_cid = 0; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (api_is_platform_admin()) { | 
				
			||||||
 | 
					    $interbreadcrumb[] = array("url" => "configuration.php", "name" => $plugin->get_lang('AvailableCoursesConfiguration')); | 
				
			||||||
 | 
					    $interbreadcrumb[] = array("url" => "paymentsetup.php", "name" => $plugin->get_lang('PaymentsConfiguration')); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$templateName = $plugin->get_lang('CourseListOnSale'); | 
				
			||||||
 | 
					$tpl = new Template($templateName); | 
				
			||||||
 | 
					if (isset($_SESSION['bc_success'])) { | 
				
			||||||
 | 
					    $tpl->assign('rmessage', 'YES'); | 
				
			||||||
 | 
					    if ($_SESSION['bc_success'] == true) { | 
				
			||||||
 | 
					        $message = sprintf($plugin->get_lang($_SESSION['bc_message']), $_SESSION['bc_url']); | 
				
			||||||
 | 
					        unset($_SESSION['bc_url']); | 
				
			||||||
 | 
					        $tpl->assign('class', 'confirmation-message'); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $message = $plugin->get_lang($_SESSION['bc_message']); | 
				
			||||||
 | 
					        $tpl->assign('class', 'warning-message'); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    $tpl->assign('responseMessage', $message); | 
				
			||||||
 | 
					    unset($_SESSION['bc_success']); | 
				
			||||||
 | 
					    unset($_SESSION['bc_message']); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    $tpl->assign('rmessage', 'NO'); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$courseList = userCourseList(); | 
				
			||||||
 | 
					$categoryList = listCategories(); | 
				
			||||||
 | 
					$currencyType = findCurrency(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tpl->assign('server', $_configuration['root_web']); | 
				
			||||||
 | 
					$tpl->assign('courses', $courseList); | 
				
			||||||
 | 
					$tpl->assign('category', $categoryList); | 
				
			||||||
 | 
					$tpl->assign('currency', $currencyType); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$listing_tpl = 'buy_courses/view/list.tpl'; | 
				
			||||||
 | 
					$content = $tpl->fetch($listing_tpl); | 
				
			||||||
 | 
					$tpl->assign('content', $content); | 
				
			||||||
 | 
					$tpl->display_one_col_template(); | 
				
			||||||
@ -0,0 +1,49 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Initialization | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/buy_course.lib.php'; | 
				
			||||||
 | 
					require_once '../../../main/inc/global.inc.php'; | 
				
			||||||
 | 
					require_once 'buy_course_plugin.class.php'; | 
				
			||||||
 | 
					$plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					$_cid = 0; | 
				
			||||||
 | 
					$templateName = $plugin->get_lang('PaymentConfiguration'); | 
				
			||||||
 | 
					$interbreadcrumb[] = array("url" => "list.php", "name" => $plugin->get_lang('CourseListOnSale')); | 
				
			||||||
 | 
					$interbreadcrumb[] = array("url" => "configuration.php", "name" => $plugin->get_lang('AvailableCoursesConfiguration')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tpl = new Template($templateName); | 
				
			||||||
 | 
					$teacher = api_is_platform_admin(); | 
				
			||||||
 | 
					api_protect_course_script(true); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($teacher) { | 
				
			||||||
 | 
					    // Sync course table with the plugin | 
				
			||||||
 | 
					    $listCurrency = listCurrency(); | 
				
			||||||
 | 
					    $paypalParams = paypalParameters(); | 
				
			||||||
 | 
					    $transferenceParams = transferenceParameters(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $confirmationImg = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/message_confirmation.png'; | 
				
			||||||
 | 
					    $saveImg = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/save.png'; | 
				
			||||||
 | 
					    $moreImg = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/more.png'; | 
				
			||||||
 | 
					    $deleteImg = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/delete.png'; | 
				
			||||||
 | 
					    $showImg = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/acces_tool.gif'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $paypalEnable = $plugin->get('paypal_enable'); | 
				
			||||||
 | 
					    $transferenceEnable = $plugin->get('transference_enable'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $tpl->assign('server', $_configuration['root_web']); | 
				
			||||||
 | 
					    $tpl->assign('currencies', $listCurrency); | 
				
			||||||
 | 
					    $tpl->assign('paypal', $paypalParams); | 
				
			||||||
 | 
					    $tpl->assign('transference', $transferenceParams); | 
				
			||||||
 | 
					    $tpl->assign('confirmation_img', $confirmationImg); | 
				
			||||||
 | 
					    $tpl->assign('save_img', $saveImg); | 
				
			||||||
 | 
					    $tpl->assign('more_img', $moreImg); | 
				
			||||||
 | 
					    $tpl->assign('delete_img', $deleteImg); | 
				
			||||||
 | 
					    $tpl->assign('show_img', $showImg); | 
				
			||||||
 | 
					    $tpl->assign('paypal_enable', $paypalEnable); | 
				
			||||||
 | 
					    $tpl->assign('transference_enable', $transferenceEnable); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $listing_tpl = 'buy_courses/view/paymentsetup.tpl'; | 
				
			||||||
 | 
					    $content = $tpl->fetch($listing_tpl); | 
				
			||||||
 | 
					    $tpl->assign('content', $content); | 
				
			||||||
 | 
					    $tpl->display_one_col_template(); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,383 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/******************************************** | 
				
			||||||
 | 
					 * PayPal API Module | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Defines all the global variables and the wrapper functions | 
				
			||||||
 | 
					 ********************************************/ | 
				
			||||||
 | 
					$PROXY_HOST = '127.0.0.1'; | 
				
			||||||
 | 
					$PROXY_PORT = '808'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$SandboxFlag = $pruebas; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * PayPal API Credentials | 
				
			||||||
 | 
					 * Replace <API_USERNAME> with your API Username | 
				
			||||||
 | 
					 * Replace <API_PASSWORD> with your API Password | 
				
			||||||
 | 
					 * Replace <API_SIGNATURE> with your Signature | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					$API_UserName = $paypalUsername; | 
				
			||||||
 | 
					$API_Password = $paypalPassword; | 
				
			||||||
 | 
					$API_Signature = $paypalSignature; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// BN Code is only applicable for partners | 
				
			||||||
 | 
					$sBNCode = "PP-ECWizard"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Define the PayPal Redirect URLs. | 
				
			||||||
 | 
					 * This is the URL that the buyer is first sent to do authorize payment with their paypal account | 
				
			||||||
 | 
					 * change the URL depending if you are testing on the sandbox or the live PayPal site | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * For the sandbox, the URL is https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token= | 
				
			||||||
 | 
					 * For the live site, the URL is https://www.paypal.com/webscr&cmd=_express-checkout&token= | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($SandboxFlag == true) { | 
				
			||||||
 | 
					    $API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp"; | 
				
			||||||
 | 
					    $PAYPAL_URL = "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token="; | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    $API_Endpoint = "https://api-3t.paypal.com/nvp"; | 
				
			||||||
 | 
					    $PAYPAL_URL = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$USE_PROXY = false; | 
				
			||||||
 | 
					$version = "93"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (session_id() == "") { | 
				
			||||||
 | 
					    session_start(); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * An express checkout transaction starts with a token, that | 
				
			||||||
 | 
					 * identifies to PayPal your transaction | 
				
			||||||
 | 
					 * In this example, when the script sees a token, the script | 
				
			||||||
 | 
					 * knows that the buyer has already authorized payment through | 
				
			||||||
 | 
					 * paypal.  If no token was found, the action is to send the buyer | 
				
			||||||
 | 
					 * to PayPal to first authorize payment | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Purpose: 	Prepares the parameters for the SetExpressCheckout API Call. | 
				
			||||||
 | 
					 * Inputs: | 
				
			||||||
 | 
					 *		paymentAmount:  	Total value of the shopping cart | 
				
			||||||
 | 
					 *		currencyCodeType: 	Currency code value the PayPal API | 
				
			||||||
 | 
					 *		paymentType: 		paymentType has to be one of the following values: Sale or Order or Authorization | 
				
			||||||
 | 
					 *		returnURL:			the page where buyers return to after they are done with the payment review on PayPal | 
				
			||||||
 | 
					 *		cancelURL:			the page where buyers return to when they cancel the payment review on PayPal | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					function CallShortcutExpressCheckout($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL, $extra) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    // Construct the parameter string that describes the SetExpressCheckout API call in the shortcut implementation | 
				
			||||||
 | 
					    $nvpstr = "&PAYMENTREQUEST_0_AMT=" . $paymentAmount; | 
				
			||||||
 | 
					    $nvpstr .= "&PAYMENTREQUEST_0_ITEMAMT=" . $paymentAmount; | 
				
			||||||
 | 
					    $nvpstr .= "&PAYMENTREQUEST_0_PAYMENTACTION=" . $paymentType; | 
				
			||||||
 | 
					    $nvpstr .= "&RETURNURL=" . $returnURL; | 
				
			||||||
 | 
					    $nvpstr .= "&CANCELURL=" . $cancelURL; | 
				
			||||||
 | 
					    $nvpstr .= "&PAYMENTREQUEST_0_CURRENCYCODE=" . $currencyCodeType; | 
				
			||||||
 | 
					    $nvpstr .= $extra; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $_SESSION["currencyCodeType"] = $currencyCodeType; | 
				
			||||||
 | 
					    $_SESSION["PaymentType"] = $paymentType; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Make the API call to PayPal | 
				
			||||||
 | 
					     * If the API call succeded, then redirect the buyer to PayPal to begin to authorize payment. | 
				
			||||||
 | 
					     * If an error occured, show the resulting errors | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    $resArray = hash_call("SetExpressCheckout", $nvpstr); | 
				
			||||||
 | 
					    $ack = strtoupper($resArray["ACK"]); | 
				
			||||||
 | 
					    if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { | 
				
			||||||
 | 
					        $token = urldecode($resArray["TOKEN"]); | 
				
			||||||
 | 
					        $_SESSION['TOKEN'] = $token; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $resArray; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Purpose: 	Prepares the parameters for the SetExpressCheckout API Call. | 
				
			||||||
 | 
					 * Inputs: | 
				
			||||||
 | 
					 *		paymentAmount:  	Total value of the shopping cart | 
				
			||||||
 | 
					 *		currencyCodeType: 	Currency code value the PayPal API | 
				
			||||||
 | 
					 *		paymentType: 		paymentType has to be one of the following values: Sale or Order or Authorization | 
				
			||||||
 | 
					 *		returnURL:			the page where buyers return to after they are done with the payment review on PayPal | 
				
			||||||
 | 
					 *		cancelURL:			the page where buyers return to when they cancel the payment review on PayPal | 
				
			||||||
 | 
					 *		shipToName:		the Ship to name entered on the merchant's site | 
				
			||||||
 | 
					 *		shipToStreet:		the Ship to Street entered on the merchant's site | 
				
			||||||
 | 
					 *		shipToCity:			the Ship to City entered on the merchant's site | 
				
			||||||
 | 
					 *		shipToState:		the Ship to State entered on the merchant's site | 
				
			||||||
 | 
					 *		shipToCountryCode:	the Code for Ship to Country entered on the merchant's site | 
				
			||||||
 | 
					 *		shipToZip:			the Ship to ZipCode entered on the merchant's site | 
				
			||||||
 | 
					 *		shipToStreet2:		the Ship to Street2 entered on the merchant's site | 
				
			||||||
 | 
					 *		phoneNum:			the phoneNum  entered on the merchant's site | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					function CallMarkExpressCheckout($paymentAmount, $currencyCodeType, $paymentType, $returnURL, | 
				
			||||||
 | 
					                                 $cancelURL, $shipToName, $shipToStreet, $shipToCity, $shipToState, | 
				
			||||||
 | 
					                                 $shipToCountryCode, $shipToZip, $shipToStreet2, $phoneNum | 
				
			||||||
 | 
					) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    // Construct the parameter string that describes the SetExpressCheckout API call in the shortcut implementation | 
				
			||||||
 | 
					    $nvpstr = "&PAYMENTREQUEST_0_AMT=" . $paymentAmount; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_PAYMENTACTION=" . $paymentType; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&RETURNURL=" . $returnURL; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&CANCELURL=" . $cancelURL; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_CURRENCYCODE=" . $currencyCodeType; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&ADDROVERRIDE=1"; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPTONAME=" . $shipToName; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPTOSTREET=" . $shipToStreet; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPTOSTREET2=" . $shipToStreet2; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPTOCITY=" . $shipToCity; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPTOSTATE=" . $shipToState; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=" . $shipToCountryCode; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPTOZIP=" . $shipToZip; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPTOPHONENUM=" . $phoneNum; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $_SESSION["currencyCodeType"] = $currencyCodeType; | 
				
			||||||
 | 
					    $_SESSION["PaymentType"] = $paymentType; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Make the API call to PayPal | 
				
			||||||
 | 
					     * If the API call succeded, then redirect the buyer to PayPal to begin to authorize payment. | 
				
			||||||
 | 
					     * If an error occured, show the resulting errors | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    $resArray = hash_call("SetExpressCheckout", $nvpstr); | 
				
			||||||
 | 
					    $ack = strtoupper($resArray["ACK"]); | 
				
			||||||
 | 
					    if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { | 
				
			||||||
 | 
					        $token = urldecode($resArray["TOKEN"]); | 
				
			||||||
 | 
					        $_SESSION['TOKEN'] = $token; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $resArray; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Purpose: Prepares the parameters for the GetExpressCheckoutDetails API Call. | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * Inputs: | 
				
			||||||
 | 
					 *		None | 
				
			||||||
 | 
					 * Returns: | 
				
			||||||
 | 
					 *		The NVP Collection object of the GetExpressCheckoutDetails Call Response. | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function GetShippingDetails($token) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * At this point, the buyer has completed authorizing the payment | 
				
			||||||
 | 
					     * at PayPal.  The function will call PayPal to obtain the details | 
				
			||||||
 | 
					     * of the authorization, including any shipping information of the | 
				
			||||||
 | 
					     * buyer.  Remember, the authorization is not a completed transaction | 
				
			||||||
 | 
					     * at this state - the buyer still needs an additional step to finalize | 
				
			||||||
 | 
					     * the transaction | 
				
			||||||
 | 
					     * | 
				
			||||||
 | 
					     * Build a second API request to PayPal, using the token as the | 
				
			||||||
 | 
					     * ID to get the details on the payment authorization | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    $nvpstr = "&TOKEN=" . $token; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Make the API call and store the results in an array. | 
				
			||||||
 | 
					     * If the call was a success, show the authorization details, and provide | 
				
			||||||
 | 
					     * an action to complete the payment. | 
				
			||||||
 | 
					     * If failed, show the error | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    $resArray = hash_call("GetExpressCheckoutDetails", $nvpstr); | 
				
			||||||
 | 
					    $ack = strtoupper($resArray["ACK"]); | 
				
			||||||
 | 
					    if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { | 
				
			||||||
 | 
					        $_SESSION['payer_id'] = $resArray['PAYERID']; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $resArray; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Purpose: 	Prepares the parameters for the GetExpressCheckoutDetails API Call. | 
				
			||||||
 | 
					 * Inputs: | 
				
			||||||
 | 
					 * sBNCode:	The BN code used by PayPal to track the transactions from a given shopping cart. | 
				
			||||||
 | 
					 * Returns: | 
				
			||||||
 | 
					 *		The NVP Collection object of the GetExpressCheckoutDetails Call Response. | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function ConfirmPayment($FinalPaymentAmt) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Gather the information to make the final call to | 
				
			||||||
 | 
					     * finalize the PayPal payment.  The variable nvpstr | 
				
			||||||
 | 
					     * holds the name value pairs | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Format the other parameters that were stored in the session from the previous calls | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $token = urlencode($_SESSION['TOKEN']); | 
				
			||||||
 | 
					    $paymentType = urlencode($_SESSION['PaymentType']); | 
				
			||||||
 | 
					    $currencyCodeType = urlencode($_SESSION['currencyCodeType']); | 
				
			||||||
 | 
					    $payerID = urlencode($_SESSION['payer_id']); | 
				
			||||||
 | 
					    $serverName = urlencode($_SERVER['SERVER_NAME']); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $nvpstr = '&TOKEN=' . $token . '&PAYERID=' . $payerID . '&PAYMENTREQUEST_0_PAYMENTACTION=' . $paymentType . '&PAYMENTREQUEST_0_AMT=' . $FinalPaymentAmt; | 
				
			||||||
 | 
					    $nvpstr .= '&PAYMENTREQUEST_0_CURRENCYCODE=' . $currencyCodeType . '&IPADDRESS=' . $serverName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Make the call to PayPal to finalize payment | 
				
			||||||
 | 
					     * If an error occured, show the resulting errors | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $resArray = hash_call("DoExpressCheckoutPayment", $nvpstr); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Display the API response back to the browser. | 
				
			||||||
 | 
					     * If the response from PayPal was a success, display the response parameters | 
				
			||||||
 | 
					     * If the response was an error, display the errors received using APIError.php. | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $ack = strtoupper($resArray["ACK"]); | 
				
			||||||
 | 
					    return $resArray; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Purpose: 	This function makes a DoDirectPayment API call | 
				
			||||||
 | 
					 * Inputs: | 
				
			||||||
 | 
					 *		paymentType:		paymentType has to be one of the following values: Sale or Order or Authorization | 
				
			||||||
 | 
					 *		paymentAmount:  	total value of the shopping cart | 
				
			||||||
 | 
					 *		currencyCode:	 	currency code value the PayPal API | 
				
			||||||
 | 
					 *		firstName:			first name as it appears on credit card | 
				
			||||||
 | 
					 *		lastName:			last name as it appears on credit card | 
				
			||||||
 | 
					 *		street:				buyer's street address line as it appears on credit card | 
				
			||||||
 | 
					 *		city:				buyer's city | 
				
			||||||
 | 
					 *		state:				buyer's state | 
				
			||||||
 | 
					 *		countryCode:		buyer's country code | 
				
			||||||
 | 
					 *		zip:				buyer's zip | 
				
			||||||
 | 
					 *		creditCardType:		buyer's credit card type (i.e. Visa, MasterCard ... ) | 
				
			||||||
 | 
					 *		creditCardNumber:	buyers credit card number without any spaces, dashes or any other characters | 
				
			||||||
 | 
					 *		expDate:			credit card expiration date | 
				
			||||||
 | 
					 *		cvv2:				Card Verification Value | 
				
			||||||
 | 
					 * Returns: | 
				
			||||||
 | 
					 *		The NVP Collection object of the DoDirectPayment Call Response. | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function DirectPayment($paymentType, $paymentAmount, $creditCardType, $creditCardNumber, | 
				
			||||||
 | 
					                       $expDate, $cvv2, $firstName, $lastName, $street, $city, $state, $zip, | 
				
			||||||
 | 
					                       $countryCode, $currencyCode) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    //Construct the parameter string that describes DoDirectPayment | 
				
			||||||
 | 
					    $nvpstr = "&AMT=" . $paymentAmount; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&CURRENCYCODE=" . $currencyCode; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&PAYMENTACTION=" . $paymentType; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&CREDITCARDTYPE=" . $creditCardType; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&ACCT=" . $creditCardNumber; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&EXPDATE=" . $expDate; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&CVV2=" . $cvv2; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&FIRSTNAME=" . $firstName; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&LASTNAME=" . $lastName; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&STREET=" . $street; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&CITY=" . $city; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&STATE=" . $state; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&COUNTRYCODE=" . $countryCode; | 
				
			||||||
 | 
					    $nvpstr = $nvpstr . "&IPADDRESS=" . $_SERVER['REMOTE_ADDR']; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $resArray = hash_call("DoDirectPayment", $nvpstr); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $resArray; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 * hash_call: Function to perform the API call to PayPal using API signature | 
				
			||||||
 | 
					 * @methodName is name of API  method. | 
				
			||||||
 | 
					 * @nvpStr is nvp string. | 
				
			||||||
 | 
					 * returns an associtive array containing the response from the server. | 
				
			||||||
 | 
					 * | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					function hash_call($methodName, $nvpStr) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    //declaring of global variables | 
				
			||||||
 | 
					    global $API_Endpoint, $version, $API_UserName, $API_Password, $API_Signature; | 
				
			||||||
 | 
					    global $USE_PROXY, $PROXY_HOST, $PROXY_PORT; | 
				
			||||||
 | 
					    global $sBNCode; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //setting the curl parameters. | 
				
			||||||
 | 
					    $ch = curl_init(); | 
				
			||||||
 | 
					    curl_setopt($ch, CURLOPT_URL, $API_Endpoint); | 
				
			||||||
 | 
					    curl_setopt($ch, CURLOPT_VERBOSE, 1); | 
				
			||||||
 | 
					    //turning off the server and peer verification(TrustManager Concept). | 
				
			||||||
 | 
					    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); | 
				
			||||||
 | 
					    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); | 
				
			||||||
 | 
					    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | 
				
			||||||
 | 
					    curl_setopt($ch, CURLOPT_POST, 1); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //if USE_PROXY constant set to TRUE in Constants.php, then only proxy will be enabled. | 
				
			||||||
 | 
					    //Set proxy name to PROXY_HOST and port number to PROXY_PORT in constants.php | 
				
			||||||
 | 
					    if ($USE_PROXY) { | 
				
			||||||
 | 
					        curl_setopt($ch, CURLOPT_PROXY, $PROXY_HOST . ":" . $PROXY_PORT); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //NVPRequest for submitting to server | 
				
			||||||
 | 
					    $nvpreq = "METHOD=" . urlencode($methodName) . "&VERSION=" . urlencode($version) . | 
				
			||||||
 | 
					        "&PWD=" . urlencode($API_Password) . "&USER=" . urlencode($API_UserName) . | 
				
			||||||
 | 
					        "&SIGNATURE=" . urlencode($API_Signature) . $nvpStr . "&BUTTONSOURCE=" . urlencode($sBNCode); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //setting the nvpreq as POST FIELD to curl | 
				
			||||||
 | 
					    curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq); | 
				
			||||||
 | 
					    //getting response from server | 
				
			||||||
 | 
					    $response = curl_exec($ch); | 
				
			||||||
 | 
					    //converting NVPResponse to an Associative Array | 
				
			||||||
 | 
					    $nvpResArray = deformatNVP($response); | 
				
			||||||
 | 
					    $nvpReqArray = deformatNVP($nvpreq); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $_SESSION['nvpReqArray'] = $nvpReqArray; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (curl_errno($ch)) { | 
				
			||||||
 | 
					        // moving to display page to display curl errors | 
				
			||||||
 | 
					        $_SESSION['curl_error_no'] = curl_errno($ch); | 
				
			||||||
 | 
					        $_SESSION['curl_error_msg'] = curl_error($ch); | 
				
			||||||
 | 
					        //Execute the Error handling module to display errors. | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        //closing the curl | 
				
			||||||
 | 
					        curl_close($ch); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $nvpResArray; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Purpose: Redirects to PayPal.com site. | 
				
			||||||
 | 
					 * Inputs:  NVP string. | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function RedirectToPayPal($token) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    global $PAYPAL_URL; | 
				
			||||||
 | 
					    // Redirect to paypal.com here | 
				
			||||||
 | 
					    $payPalURL = $PAYPAL_URL . $token; | 
				
			||||||
 | 
					    header("Location: " . $payPalURL); | 
				
			||||||
 | 
					    exit; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * This function will take NVPString and convert it to an Associative Array and it will decode the response. | 
				
			||||||
 | 
					 * It is usefull to search for a particular key and displaying arrays. | 
				
			||||||
 | 
					 * @nvpstr is NVPString. | 
				
			||||||
 | 
					 * @nvpArray is Associative Array. | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function deformatNVP($nvpstr) | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    $intial = 0; | 
				
			||||||
 | 
					    $nvpArray = array(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (strlen($nvpstr)) { | 
				
			||||||
 | 
					        //postion of Key | 
				
			||||||
 | 
					        $keypos = strpos($nvpstr, '='); | 
				
			||||||
 | 
					        //position of value | 
				
			||||||
 | 
					        $valuepos = strpos($nvpstr, '&') ? strpos($nvpstr, '&') : strlen($nvpstr); | 
				
			||||||
 | 
					        /*getting the Key and Value values and storing in a Associative Array*/ | 
				
			||||||
 | 
					        $keyval = substr($nvpstr, $intial, $keypos); | 
				
			||||||
 | 
					        $valval = substr($nvpstr, $keypos + 1, $valuepos - $keypos - 1); | 
				
			||||||
 | 
					        //decoding the respose | 
				
			||||||
 | 
					        $nvpArray[urldecode($keyval)] = urldecode($valval); | 
				
			||||||
 | 
					        $nvpstr = substr($nvpstr, $valuepos + 1, strlen($nvpstr)); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $nvpArray; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,35 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Initialization | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					require_once '../config.php'; | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/buy_course.lib.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					$_cid = 0; | 
				
			||||||
 | 
					$tableName = $plugin->get_lang('AvailableCoursesConfiguration'); | 
				
			||||||
 | 
					$interbreadcrumb[] = array("url" => "list.php", "name" => $plugin->get_lang('CourseListOnSale')); | 
				
			||||||
 | 
					$interbreadcrumb[] = array("url" => "paymentsetup.php", "name" => $plugin->get_lang('PaymentsConfiguration')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tpl = new Template($tableName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$teacher = api_is_platform_admin(); | 
				
			||||||
 | 
					api_protect_course_script(true); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($teacher) { | 
				
			||||||
 | 
					    $pendingList = pendingList(); | 
				
			||||||
 | 
					    $confirmationImg = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/message_confirmation.png'; | 
				
			||||||
 | 
					    $deleteImg = api_get_path(WEB_PLUGIN_PATH) . 'buy_courses/resources/delete.png'; | 
				
			||||||
 | 
					    $currencyType = findCurrency(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $tpl->assign('server', $_configuration['root_web']); | 
				
			||||||
 | 
					    $tpl->assign('pending', $pendingList); | 
				
			||||||
 | 
					    $tpl->assign('confirmation_img', $confirmationImg); | 
				
			||||||
 | 
					    $tpl->assign('delete_img', $deleteImg); | 
				
			||||||
 | 
					    $tpl->assign('currency', $currencyType); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $listing_tpl = 'buy_courses/view/pending_orders.tpl'; | 
				
			||||||
 | 
					    $content = $tpl->fetch($listing_tpl); | 
				
			||||||
 | 
					    $tpl->assign('content', $content); | 
				
			||||||
 | 
					    $tpl->display_one_col_template(); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,85 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Initialization | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					require_once '../config.php'; | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/buy_course.lib.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					$_cid = 0; | 
				
			||||||
 | 
					$templateName = $plugin->get_lang('PaymentMethods'); | 
				
			||||||
 | 
					$interbreadcrumb[] = array("url" => "list.php", "name" => $plugin->get_lang('CourseListOnSale')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tpl = new Template($templateName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!empty($_GET['code'])) { | 
				
			||||||
 | 
					    $code = (int)$_GET['code']; | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    $code = $_SESSION['bc_course_code']; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); | 
				
			||||||
 | 
					$tableBuyCourse = Database::get_main_table(TABLE_BUY_COURSE); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$sql = "SELECT a.price, a.title, b.code | 
				
			||||||
 | 
					    FROM $tableBuyCourse a, $tableCourse b | 
				
			||||||
 | 
					    WHERE a.id_course = " . $code . " | 
				
			||||||
 | 
					    AND a.id_course = b.id;"; | 
				
			||||||
 | 
					$res = Database::query($sql); | 
				
			||||||
 | 
					$row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$_SESSION['Payment_Amount'] = number_format($row['price'], 2, '.', ''); | 
				
			||||||
 | 
					$_SESSION['bc_course_code'] = $code; | 
				
			||||||
 | 
					$_SESSION['bc_course_title'] = $row['title']; | 
				
			||||||
 | 
					$_SESSION['bc_course_codetext'] = $row['code']; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!isset($_SESSION['_user'])) { | 
				
			||||||
 | 
					    //Needs to be Registered | 
				
			||||||
 | 
					    if (!isset($_SESSION['bc_user'])) { | 
				
			||||||
 | 
					        header('Location:inscription.php'); | 
				
			||||||
 | 
					        exit; | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $_SESSION['bc_user_id'] = $_SESSION['bc_user']['user_id']; | 
				
			||||||
 | 
					        $tpl->assign('name', $_SESSION['bc_user']['firstName'] . ' ' . $_SESSION['bc_user']['lastName']); | 
				
			||||||
 | 
					        $tpl->assign('email', $_SESSION['bc_user']['mail']); | 
				
			||||||
 | 
					        $tpl->assign('user', $_SESSION['bc_user']['username']); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    $_SESSION['bc_user_id'] = $_SESSION['_user']['user_id']; | 
				
			||||||
 | 
					    $_SESSION['bc_user'] = $_SESSION['_user']; | 
				
			||||||
 | 
					    $tpl->assign('name', $_SESSION['bc_user']['firstname'] . ' ' . $_SESSION['bc_user']['lastname']); | 
				
			||||||
 | 
					    $tpl->assign('email', $_SESSION['bc_user']['email']); | 
				
			||||||
 | 
					    $tpl->assign('user', $_SESSION['bc_user']['username']); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (checkUserCourse($_SESSION['bc_course_codetext'], $_SESSION['bc_user_id'])) { | 
				
			||||||
 | 
					    $_SESSION['bc_success'] = false; | 
				
			||||||
 | 
					    $_SESSION['bc_message'] = 'AlreadyBuy'; | 
				
			||||||
 | 
					    header('Location: list.php'); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (checkUserCourseTransference($_SESSION['bc_course_codetext'], $_SESSION['bc_user_id'])) { | 
				
			||||||
 | 
					    $_SESSION['bc_success'] = false; | 
				
			||||||
 | 
					    $_SESSION['bc_message'] = 'bc_tmp_registered'; | 
				
			||||||
 | 
					    header('Location: list.php'); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$currencyType = findCurrency(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$paypalEnable = $plugin->get('paypal_enable'); | 
				
			||||||
 | 
					$transferenceEnable = $plugin->get('transference_enable'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$courseInfo = courseInfo($code); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tpl->assign('course', $courseInfo); | 
				
			||||||
 | 
					$tpl->assign('server', $_configuration['root_web']); | 
				
			||||||
 | 
					$tpl->assign('paypal_enable', $paypalEnable); | 
				
			||||||
 | 
					$tpl->assign('transference_enable', $transferenceEnable); | 
				
			||||||
 | 
					$tpl->assign('title', $_SESSION['bc_course_title']); | 
				
			||||||
 | 
					$tpl->assign('price', $_SESSION['Payment_Amount']); | 
				
			||||||
 | 
					$tpl->assign('currency', $currencyType); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$listing_tpl = 'buy_courses/view/process.tpl'; | 
				
			||||||
 | 
					$content = $tpl->fetch($listing_tpl); | 
				
			||||||
 | 
					$tpl->assign('content', $content); | 
				
			||||||
 | 
					$tpl->display_one_col_template(); | 
				
			||||||
@ -0,0 +1,152 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once '../config.php'; | 
				
			||||||
 | 
					require_once '../../../main/inc/lib/mail.lib.inc.php'; | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/buy_course.lib.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_POST['payment_type'] == '') { | 
				
			||||||
 | 
					    header('Location:process.php'); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tableBuyCourseTemporal = Database::get_main_table(TABLE_BUY_COURSE_TEMPORAL); | 
				
			||||||
 | 
					$tableBuyCoursePaypal = Database::get_main_table(TABLE_BUY_COURSE_PAYPAL); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (isset($_POST['Confirm'])) { | 
				
			||||||
 | 
					    // Save the user, course and reference in a tmp table | 
				
			||||||
 | 
					    $user_id = $_SESSION['bc_user_id']; | 
				
			||||||
 | 
					    $course_code = $_SESSION['bc_course_codetext']; | 
				
			||||||
 | 
					    $reference = calculateReference(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    reset($_POST); | 
				
			||||||
 | 
					    while (list ($param, $val) = each($_POST)) { | 
				
			||||||
 | 
					        $asignacion = "\$" . $param . "=mysql_real_escape_string(\$_POST['" . $param . "']);"; | 
				
			||||||
 | 
					        eval($asignacion); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $sql = "INSERT INTO $tableBuyCourseTemporal (user_id, name, course_code, title, reference, price) | 
				
			||||||
 | 
					        VALUES ('" . $user_id . "', '" . $name . "','" . $course_code . "','" . $title . "','" . $reference . "','" . $price . "');"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Notify the user and send the bank info | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $accountsList = listAccounts(); | 
				
			||||||
 | 
					    $text = '<div align="center"><table style="width:70%"><tr><th style="text-align:center"><h3>Datos Bancarios</h3></th></tr>'; | 
				
			||||||
 | 
					    foreach ($accountsList as $account) { | 
				
			||||||
 | 
					        $text .= '<tr>'; | 
				
			||||||
 | 
					        $text .= '<td>'; | 
				
			||||||
 | 
					        $text .= '<font color="#0000FF"><strong>' . htmlspecialchars($account['name']) . '</strong></font><br />'; | 
				
			||||||
 | 
					        if ($account['swift'] != '') { | 
				
			||||||
 | 
					            $text .= 'SWIFT: <strong>' . htmlspecialchars($account['swift']) . '</strong><br />'; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					        $text .= 'Cuenta Bancaria: <strong>' . htmlspecialchars($account['account']) . '</strong><br />'; | 
				
			||||||
 | 
					        $text .= '</td></tr>'; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					    $text .= '</table></div>'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					    $asunto = utf8_encode($plugin->get_lang('bc_subject')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!isset($_SESSION['_user'])) { | 
				
			||||||
 | 
					        $name = $_SESSION['bc_user']['firstName'] . ' ' . $_SESSION['bc_user']['lastName']; | 
				
			||||||
 | 
					        $email = $_SESSION['bc_user']['mail']; | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $name = $_SESSION['bc_user']['firstname'] . ' ' . $_SESSION['bc_user']['lastname']; | 
				
			||||||
 | 
					        $email = $_SESSION['bc_user']['email']; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $courseInfo = courseInfo($_SESSION['bc_course_code']); | 
				
			||||||
 | 
					    $title_course = $courseInfo['title']; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $message = $plugin->get_lang('bc_message'); | 
				
			||||||
 | 
					    $message = str_replace("{{name}}", $name, $message); | 
				
			||||||
 | 
					    $message = str_replace("{{course}}", $title_course, $message); | 
				
			||||||
 | 
					    $message = str_replace("{{reference}}", $reference, $message); | 
				
			||||||
 | 
					    $message .= $text; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    api_mail($name, $email, $asunto, $message); | 
				
			||||||
 | 
					    // Return to course list | 
				
			||||||
 | 
					    header('Location:list.php'); | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$currencyType = $_POST['currency_type']; | 
				
			||||||
 | 
					$_SESSION['bc_currency_type'] = $currencyType; | 
				
			||||||
 | 
					$server = $_POST['server']; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_POST['payment_type'] == "PayPal") { | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCoursePaypal WHERE id='1';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					    $pruebas = ($row['sandbox'] == "YES") ? true: false; | 
				
			||||||
 | 
					    $paypalUsername = $row['username']; | 
				
			||||||
 | 
					    $paypalPassword = $row['password']; | 
				
			||||||
 | 
					    $paypalSignature = $row['signature']; | 
				
			||||||
 | 
					    require_once("paypalfunctions.php"); | 
				
			||||||
 | 
					    // PayPal Express Checkout Module | 
				
			||||||
 | 
					    $paymentAmount = $_SESSION["Payment_Amount"]; | 
				
			||||||
 | 
					    $currencyCodeType = $currencyType; | 
				
			||||||
 | 
					    $paymentType = "Sale"; | 
				
			||||||
 | 
					    $returnURL = $server . "plugin/buy_courses/src/success.php"; | 
				
			||||||
 | 
					    $cancelURL = $server . "plugin/buy_courses/src/error.php"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $courseInfo = courseInfo($_SESSION['bc_course_code']); | 
				
			||||||
 | 
					    $courseTitle = $courseInfo['title']; | 
				
			||||||
 | 
					    $i = 0; | 
				
			||||||
 | 
					    $extra = "&L_PAYMENTREQUEST_0_NAME" . $i . "=" . $courseTitle; | 
				
			||||||
 | 
					    $extra .= "&L_PAYMENTREQUEST_0_AMT" . $i . "=" . $paymentAmount; | 
				
			||||||
 | 
					    $extra .= "&L_PAYMENTREQUEST_0_QTY" . $i . "=1"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $resArray = CallShortcutExpressCheckout($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL, $extra); | 
				
			||||||
 | 
					    $ack = strtoupper($resArray["ACK"]); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { | 
				
			||||||
 | 
					        RedirectToPayPal($resArray["TOKEN"]); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); | 
				
			||||||
 | 
					        $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); | 
				
			||||||
 | 
					        $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); | 
				
			||||||
 | 
					        $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        echo "<br />SetExpressCheckout API call failed. "; | 
				
			||||||
 | 
					        echo "<br />Detailed Error Message: " . $ErrorLongMsg; | 
				
			||||||
 | 
					        echo "<br />Short Error Message: " . $ErrorShortMsg; | 
				
			||||||
 | 
					        echo "<br />Error Code: " . $ErrorCode; | 
				
			||||||
 | 
					        echo "<br />Error Severity Code: " . $ErrorSeverityCode; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_POST['payment_type'] == "Transference") { | 
				
			||||||
 | 
					    $_cid = 0; | 
				
			||||||
 | 
					    $templateName = $plugin->get_lang('PaymentMethods'); | 
				
			||||||
 | 
					    $interbreadcrumb[] = array("url" => "list.php", "name" => $plugin->get_lang('CourseListOnSale')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $tpl = new Template($templateName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $code = $_SESSION['bc_course_code']; | 
				
			||||||
 | 
					    $courseInfo = courseInfo($code); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $tpl->assign('course', $courseInfo); | 
				
			||||||
 | 
					    $tpl->assign('server', $_configuration['root_web']); | 
				
			||||||
 | 
					    $tpl->assign('title', $_SESSION['bc_course_title']); | 
				
			||||||
 | 
					    $tpl->assign('price', $_SESSION['Payment_Amount']); | 
				
			||||||
 | 
					    $tpl->assign('currency', $_SESSION['bc_currency_type']); | 
				
			||||||
 | 
					    if (!isset($_SESSION['_user'])) { | 
				
			||||||
 | 
					        $tpl->assign('name', $_SESSION['bc_user']['firstName'] . ' ' . $_SESSION['bc_user']['lastName']); | 
				
			||||||
 | 
					        $tpl->assign('email', $_SESSION['bc_user']['mail']); | 
				
			||||||
 | 
					        $tpl->assign('user', $_SESSION['bc_user']['username']); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $tpl->assign('name', $_SESSION['bc_user']['firstname'] . ' ' . $_SESSION['bc_user']['lastname']); | 
				
			||||||
 | 
					        $tpl->assign('email', $_SESSION['bc_user']['email']); | 
				
			||||||
 | 
					        $tpl->assign('user', $_SESSION['bc_user']['username']); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Get bank list account | 
				
			||||||
 | 
					    $accountsList = listAccounts(); | 
				
			||||||
 | 
					    $tpl->assign('accounts', $accountsList); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $listing_tpl = 'buy_courses/view/process_confirm.tpl'; | 
				
			||||||
 | 
					    $content = $tpl->fetch($listing_tpl); | 
				
			||||||
 | 
					    $tpl->assign('content', $content); | 
				
			||||||
 | 
					    $tpl->display_one_col_template(); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,313 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use ChamiloSession as Session; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once '../config.php'; | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/buy_course.lib.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'mail.lib.inc.php'; | 
				
			||||||
 | 
					require_once api_get_path(LIBRARY_PATH) . 'course.lib.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tableBuyCoursePaypal = Database::get_main_table(TABLE_BUY_COURSE_PAYPAL); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$plugin = Buy_CoursesPlugin::create(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Paypal data | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					$sql = "SELECT * FROM $tableBuyCoursePaypal WHERE id='1';"; | 
				
			||||||
 | 
					$res = Database::query($sql); | 
				
			||||||
 | 
					$row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					$pruebas = ($row['sandbox'] == "YES") ? true: false; | 
				
			||||||
 | 
					$paypalUsername = $row['username']; | 
				
			||||||
 | 
					$paypalPassword = $row['password']; | 
				
			||||||
 | 
					$paypalSignature = $row['signature']; | 
				
			||||||
 | 
					require_once("paypalfunctions.php"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * PayPal Express Checkout Call | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Check to see if the Request object contains a variable named 'token'	 | 
				
			||||||
 | 
					$token = ""; | 
				
			||||||
 | 
					if (isset($_REQUEST['token'])) { | 
				
			||||||
 | 
					    $token = $_REQUEST['token']; | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// If the Request object contains the variable 'token' then it means that the user is coming from PayPal site.	 | 
				
			||||||
 | 
					if ($token != "") { | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCoursePaypal WHERE id='1';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					    $paypalUsername = $row['username']; | 
				
			||||||
 | 
					    $paypalPassword = $row['password']; | 
				
			||||||
 | 
					    $paypalSignature = $row['signature']; | 
				
			||||||
 | 
					    require_once 'paypalfunctions.php'; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * Calls the GetExpressCheckoutDetails API call | 
				
			||||||
 | 
					     * The GetShippingDetails function is defined in PayPalFunctions.jsp | 
				
			||||||
 | 
					     *included at the top of this file. | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    $resArray = GetShippingDetails($token); | 
				
			||||||
 | 
					    $ack = strtoupper($resArray["ACK"]); | 
				
			||||||
 | 
					    if ($ack == "SUCCESS" || $ack == "SUCESSWITHWARNING") { | 
				
			||||||
 | 
					        /** | 
				
			||||||
 | 
					         * The information that is returned by the GetExpressCheckoutDetails | 
				
			||||||
 | 
					         * call should be integrated by the partner into his Order Review page | 
				
			||||||
 | 
					         */ | 
				
			||||||
 | 
					        $email = $resArray["EMAIL"]; // ' Email address of payer. | 
				
			||||||
 | 
					        $payerId = $resArray["PAYERID"]; // ' Unique PayPal customer account identification number. | 
				
			||||||
 | 
					        $payerStatus = $resArray["PAYERSTATUS"]; // ' Status of payer. Character length and limitations: 10 single-byte alphabetic characters. | 
				
			||||||
 | 
					        $salutation = $resArray["SALUTATION"]; // ' Payer's salutation. | 
				
			||||||
 | 
					        $firstName = $resArray["FIRSTNAME"]; // ' Payer's first name. | 
				
			||||||
 | 
					        $middleName = $resArray["MIDDLENAME"]; // ' Payer's middle name. | 
				
			||||||
 | 
					        $lastName = $resArray["LASTNAME"]; // ' Payer's last name. | 
				
			||||||
 | 
					        $suffix = $resArray["SUFFIX"]; // ' Payer's suffix. | 
				
			||||||
 | 
					        $cntryCode = $resArray["COUNTRY_CODE"]; // ' Payer's country of residence in the form of ISO standard 3166 two-character country codes. | 
				
			||||||
 | 
					        $business = $resArray["BUSINESS"]; // ' Payer's business name. | 
				
			||||||
 | 
					        $shipToName = $resArray["PAYMENTREQUEST_0_SHIPTONAME"]; // ' Person's name associated with this address. | 
				
			||||||
 | 
					        $shipToStreet = $resArray["PAYMENTREQUEST_0_SHIPTOSTREET"]; // ' First street address. | 
				
			||||||
 | 
					        $shipToStreet2 = $resArray["PAYMENTREQUEST_0_SHIPTOSTREET2"]; // ' Second street address. | 
				
			||||||
 | 
					        $shipToCity = $resArray["PAYMENTREQUEST_0_SHIPTOCITY"]; // ' Name of city. | 
				
			||||||
 | 
					        $shipToState = $resArray["PAYMENTREQUEST_0_SHIPTOSTATE"]; // ' State or province | 
				
			||||||
 | 
					        $shipToCntryCode = $resArray["PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE"]; // ' Country code. | 
				
			||||||
 | 
					        $shipToZip = $resArray["PAYMENTREQUEST_0_SHIPTOZIP"]; // ' U.S. Zip code or other country-specific postal code. | 
				
			||||||
 | 
					        $addressStatus = $resArray["ADDRESSSTATUS"]; // ' Status of street address on file with PayPal | 
				
			||||||
 | 
					        $invoiceNumber = $resArray["INVNUM"]; // ' Your own invoice or tracking number, as set by you in the element of the same name in SetExpressCheckout request . | 
				
			||||||
 | 
					        $phonNumber = $resArray["PHONENUM"]; // ' Payer's contact telephone number. Note:  PayPal returns a contact telephone number only if your Merchant account profile settings require that the buyer enter one. | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        //Display a user friendly Error on the page using any of the following error information returned by PayPal | 
				
			||||||
 | 
					        $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); | 
				
			||||||
 | 
					        $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); | 
				
			||||||
 | 
					        $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); | 
				
			||||||
 | 
					        $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        echo "<br />GetExpressCheckoutDetails API call failed. "; | 
				
			||||||
 | 
					        echo "<br />Detailed Error Message: " . $ErrorLongMsg; | 
				
			||||||
 | 
					        echo "<br />Short Error Message: " . $ErrorShortMsg; | 
				
			||||||
 | 
					        echo "<br />Error Code: " . $ErrorCode; | 
				
			||||||
 | 
					        echo "<br />Error Severity Code: " . $ErrorSeverityCode; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!isset($_POST['paymentOption'])) { | 
				
			||||||
 | 
					    // Confirm the order | 
				
			||||||
 | 
					    $_cid = 0; | 
				
			||||||
 | 
					    $templateName = $plugin->get_lang('PaymentMethods'); | 
				
			||||||
 | 
					    $interbreadcrumb[] = array("url" => "list.php", "name" => $plugin->get_lang('CourseListOnSale')); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $tpl = new Template($templateName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $code = $_SESSION['bc_course_code']; | 
				
			||||||
 | 
					    $courseInfo = courseInfo($code); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $tpl->assign('course', $courseInfo); | 
				
			||||||
 | 
					    $tpl->assign('server', $_configuration['root_web']); | 
				
			||||||
 | 
					    $tpl->assign('title', $_SESSION['bc_course_title']); | 
				
			||||||
 | 
					    $tpl->assign('price', $_SESSION['Payment_Amount']); | 
				
			||||||
 | 
					    $tpl->assign('currency', $_SESSION['bc_currency_type']); | 
				
			||||||
 | 
					    if (!isset($_SESSION['_user'])) { | 
				
			||||||
 | 
					        $tpl->assign('name', $_SESSION['bc_user']['firstName'] . ' ' . $_SESSION['bc_user']['lastName']); | 
				
			||||||
 | 
					        $tpl->assign('email', $_SESSION['bc_user']['mail']); | 
				
			||||||
 | 
					        $tpl->assign('user', $_SESSION['bc_user']['username']); | 
				
			||||||
 | 
					    } else { | 
				
			||||||
 | 
					        $tpl->assign('name', $_SESSION['bc_user']['firstname'] . ' ' . $_SESSION['bc_user']['lastname']); | 
				
			||||||
 | 
					        $tpl->assign('email', $_SESSION['bc_user']['email']); | 
				
			||||||
 | 
					        $tpl->assign('user', $_SESSION['bc_user']['username']); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $listing_tpl = 'buy_courses/view/success.tpl'; | 
				
			||||||
 | 
					    $content = $tpl->fetch($listing_tpl); | 
				
			||||||
 | 
					    $tpl->assign('content', $content); | 
				
			||||||
 | 
					    $tpl->display_one_col_template(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} else { | 
				
			||||||
 | 
					    /** | 
				
			||||||
 | 
					     * PayPal Express Checkout Call | 
				
			||||||
 | 
					     */ | 
				
			||||||
 | 
					    $PaymentOption = $_POST['paymentOption']; | 
				
			||||||
 | 
					    $sql = "SELECT * FROM $tableBuyCoursePaypal WHERE id='1';"; | 
				
			||||||
 | 
					    $res = Database::query($sql); | 
				
			||||||
 | 
					    $row = Database::fetch_assoc($res); | 
				
			||||||
 | 
					    $paypalUsername = $row['username']; | 
				
			||||||
 | 
					    $paypalPassword = $row['password']; | 
				
			||||||
 | 
					    $paypalSignature = $row['signature']; | 
				
			||||||
 | 
					    require_once("paypalfunctions.php"); | 
				
			||||||
 | 
					    if ($PaymentOption == "PayPal") { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** | 
				
			||||||
 | 
					         * The paymentAmount is the total value of | 
				
			||||||
 | 
					         * the shopping cart, that was set | 
				
			||||||
 | 
					         * earlier in a session variable | 
				
			||||||
 | 
					         * by the shopping cart page | 
				
			||||||
 | 
					         */ | 
				
			||||||
 | 
					        $finalPaymentAmount = $_SESSION["Payment_Amount"]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /** | 
				
			||||||
 | 
					         * Calls the DoExpressCheckoutPayment API call | 
				
			||||||
 | 
					         * The ConfirmPayment function is defined in the file PayPalFunctions.jsp, | 
				
			||||||
 | 
					         * that is included at the top of this file. | 
				
			||||||
 | 
					         */ | 
				
			||||||
 | 
					        $resArray = ConfirmPayment($finalPaymentAmount); | 
				
			||||||
 | 
					        $ack = strtoupper($resArray["ACK"]); | 
				
			||||||
 | 
					        if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /** | 
				
			||||||
 | 
					             * THE PARTNER SHOULD SAVE THE KEY TRANSACTION RELATED INFORMATION LIKE transactionId & orderTime | 
				
			||||||
 | 
					             * IN THEIR OWN  DATABASE | 
				
			||||||
 | 
					             * AND THE REST OF THE INFORMATION CAN BE USED TO UNDERSTAND THE STATUS OF THE PAYMENT | 
				
			||||||
 | 
					             */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $transactionId = $resArray["PAYMENTINFO_0_TRANSACTIONID"]; // ' Unique transaction ID of the payment. Note:  If the PaymentAction of the request was Authorization or Order, this value is your AuthorizationID for use with the Authorization & Capture APIs. | 
				
			||||||
 | 
					            $transactionType = $resArray["PAYMENTINFO_0_TRANSACTIONTYPE"]; //' The type of transaction Possible values: l  cart l  express-checkout | 
				
			||||||
 | 
					            $paymentType = $resArray["PAYMENTINFO_0_PAYMENTTYPE"]; //' Indicates whether the payment is instant or delayed. Possible values: l  none l  echeck l  instant | 
				
			||||||
 | 
					            $orderTime = $resArray["PAYMENTINFO_0_ORDERTIME"]; //' Time/date stamp of payment | 
				
			||||||
 | 
					            $amt = $resArray["PAYMENTINFO_0_AMT"]; //' The final amount charged, including any shipping and taxes from your Merchant Profile. | 
				
			||||||
 | 
					            $currencyCode = $resArray["PAYMENTINFO_0_CURRENCYCODE"]; //' A three-character currency code for one of the currencies listed in PayPay-Supported Transactional Currencies. Default: USD. | 
				
			||||||
 | 
					            $feeAmt = $resArray["PAYMENTINFO_0_FEEAMT"]; //' PayPal fee amount charged for the transaction | 
				
			||||||
 | 
					            $settleAmt = $resArray["PAYMENTINFO_0_SETTLEAMT"]; //' Amount deposited in your PayPal account after a currency conversion. | 
				
			||||||
 | 
					            $taxAmt = $resArray["PAYMENTINFO_0_TAXAMT"]; //' Tax charged on the transaction. | 
				
			||||||
 | 
					            $exchangeRate = $resArray["PAYMENTINFO_0_EXCHANGERATE"]; //' Exchange rate if a currency conversion occurred. Relevant only if your are billing in their non-primary currency. If the customer chooses to pay with a currency other than the non-primary currency, the conversion occurs in the customer's account. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /** | 
				
			||||||
 | 
					             * Status of the payment: | 
				
			||||||
 | 
					             * Completed: The payment has been completed, and the funds have been added successfully to your account balance. | 
				
			||||||
 | 
					             * Pending: The payment is pending. See the PendingReason element for more information. | 
				
			||||||
 | 
					             */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $paymentStatus = $resArray["PAYMENTINFO_0_PAYMENTSTATUS"]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /** | 
				
			||||||
 | 
					             * The reason the payment is pending: | 
				
			||||||
 | 
					             * none: No pending reason | 
				
			||||||
 | 
					             * address: The payment is pending because your customer did not include a confirmed | 
				
			||||||
 | 
					             * shipping address and your Payment Receiving Preferences is set such that you want to | 
				
			||||||
 | 
					             * manually accept or deny each of these payments. To change your preference, go to the Preferences section of your Profile. | 
				
			||||||
 | 
					             * echeck: The payment is pending because it was made by an eCheck that has not yet cleared. | 
				
			||||||
 | 
					             * intl: The payment is pending because you hold a non-U.S. account and do not have a withdrawal mechanism. | 
				
			||||||
 | 
					             * You must manually accept or deny this payment from your Account Overview. | 
				
			||||||
 | 
					             * multi-currency: You do not have a balance in the currency sent, and you do not have your | 
				
			||||||
 | 
					             * Payment Receiving Preferences set to automatically convert and accept this payment. You must manually accept or deny this payment. | 
				
			||||||
 | 
					             * verify: The payment is pending because you are not yet verified. You must verify your account before you can accept this payment. | 
				
			||||||
 | 
					             * other: The payment is pending for a reason other than those listed above. For more information, contact PayPal customer service. | 
				
			||||||
 | 
					             */ | 
				
			||||||
 | 
					            $pendingReason = $resArray["PAYMENTINFO_0_PENDINGREASON"]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /** | 
				
			||||||
 | 
					             * The reason for a reversal if TransactionType is reversal: | 
				
			||||||
 | 
					             *  none: No reason code | 
				
			||||||
 | 
					             *  chargeback: A reversal has occurred on this transaction due to a chargeback by your customer. | 
				
			||||||
 | 
					             *  guarantee: A reversal has occurred on this transaction due to your customer triggering a money-back guarantee. | 
				
			||||||
 | 
					             *  buyer-complaint: A reversal has occurred on this transaction due to a complaint about the transaction from your customer. | 
				
			||||||
 | 
					             *  refund: A reversal has occurred on this transaction because you have given the customer a refund. | 
				
			||||||
 | 
					             *  other: A reversal has occurred on this transaction due to a reason not listed above. | 
				
			||||||
 | 
					             */ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $reasonCode = $resArray["PAYMENTINFO_0_REASONCODE"]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Insert the user information to activate the user | 
				
			||||||
 | 
					            if ($paymentStatus == "Completed") { | 
				
			||||||
 | 
					                $user_id = $_SESSION['bc_user_id']; | 
				
			||||||
 | 
					                $course_code = $_SESSION['bc_course_codetext']; | 
				
			||||||
 | 
					                $all_course_information = CourseManager::get_course_information($course_code); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (CourseManager::subscribe_user($user_id, $course_code)) { | 
				
			||||||
 | 
					                    $send = api_get_course_setting('email_alert_to_teacher_on_new_user_in_course', $course_code); | 
				
			||||||
 | 
					                    if ($send == 1) { | 
				
			||||||
 | 
					                        CourseManager::email_to_tutor($user_id, $course_code, $send_to_tutor_also = false); | 
				
			||||||
 | 
					                    } else if ($send == 2) { | 
				
			||||||
 | 
					                        CourseManager::email_to_tutor($user_id, $course_code, $send_to_tutor_also = true); | 
				
			||||||
 | 
					                    } | 
				
			||||||
 | 
					                    $url = Display::url($all_course_information['title'], api_get_course_url($course_code)); | 
				
			||||||
 | 
					                    $_SESSION['bc_message'] = 'EnrollToCourseXSuccessful'; | 
				
			||||||
 | 
					                    $_SESSION['bc_url'] = $url; | 
				
			||||||
 | 
					                    $_SESSION['bc_success'] = true; | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                    $_SESSION['bc_message'] = 'ErrorContactPlatformAdmin'; | 
				
			||||||
 | 
					                    $_SESSION['bc_success'] = false; | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					                // Activate the use | 
				
			||||||
 | 
					                $TABLE_USER = Database::get_main_table(TABLE_MAIN_USER); | 
				
			||||||
 | 
					                $sql = "UPDATE " . $TABLE_USER . "	SET active='1' WHERE user_id='" . $_SESSION['bc_user_id'] . "'"; | 
				
			||||||
 | 
					                Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                $user_table = Database::get_main_table(TABLE_MAIN_USER); | 
				
			||||||
 | 
					                $admin_table = Database::get_main_table(TABLE_MAIN_ADMIN); | 
				
			||||||
 | 
					                $track_e_login = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                $sql = "SELECT user.*, a.user_id is_admin, login.login_date | 
				
			||||||
 | 
										FROM $user_table | 
				
			||||||
 | 
										LEFT JOIN $admin_table a | 
				
			||||||
 | 
										ON user.user_id = a.user_id | 
				
			||||||
 | 
										LEFT JOIN $track_e_login login | 
				
			||||||
 | 
										ON user.user_id  = login.login_user_id | 
				
			||||||
 | 
										WHERE user.user_id = '" . $_SESSION['bc_user_id'] . "' | 
				
			||||||
 | 
										ORDER BY login.login_date DESC LIMIT 1"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                $result = Database::query($sql); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (Database::num_rows($result) > 0) { | 
				
			||||||
 | 
					                    // Extracting the user data | 
				
			||||||
 | 
					                    $uData = Database::fetch_array($result); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    $_user = _api_format_user($uData, false); | 
				
			||||||
 | 
					                    $_user['lastLogin'] = api_strtotime($uData['login_date'], 'UTC'); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    $is_platformAdmin = (bool)(!is_null($uData['is_admin'])); | 
				
			||||||
 | 
					                    $is_allowedCreateCourse = (bool)(($uData ['status'] == COURSEMANAGER) or (api_get_setting('drhCourseManagerRights') and $uData['status'] == DRH)); | 
				
			||||||
 | 
					                    ConditionalLogin::check_conditions($uData); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    Session::write('_user', $_user); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    UserManager::update_extra_field_value($_user['user_id'], 'already_logged_in', 'true'); | 
				
			||||||
 | 
					                    Session::write('is_platformAdmin', $is_platformAdmin); | 
				
			||||||
 | 
					                    Session::write('is_allowedCreateCourse', $is_allowedCreateCourse); | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                    header('location:' . api_get_path(WEB_PATH)); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Delete variables | 
				
			||||||
 | 
					                unset($_SESSION['bc_user_id']); | 
				
			||||||
 | 
					                unset($_SESSION['bc_course_code']); | 
				
			||||||
 | 
					                unset($_SESSION['bc_course_codetext']); | 
				
			||||||
 | 
					                unset($_SESSION['bc_course_title']); | 
				
			||||||
 | 
					                unset($_SESSION['bc_user']); | 
				
			||||||
 | 
					                unset($_SESSION["Payment_Amount"]); | 
				
			||||||
 | 
					                unset($_SESSION["sec_token"]); | 
				
			||||||
 | 
					                unset($_SESSION["currencyCodeType"]); | 
				
			||||||
 | 
					                unset($_SESSION["PaymentType"]); | 
				
			||||||
 | 
					                unset($_SESSION["nvpReqArray"]); | 
				
			||||||
 | 
					                unset($_SESSION['TOKEN']); | 
				
			||||||
 | 
					                header('Location:list.php'); | 
				
			||||||
 | 
					            } else { | 
				
			||||||
 | 
					                $_SESSION['bc_message'] = 'CancelOrder'; | 
				
			||||||
 | 
					                unset($_SESSION['bc_course_code']); | 
				
			||||||
 | 
					                unset($_SESSION['bc_course_title']); | 
				
			||||||
 | 
					                unset($_SESSION["Payment_Amount"]); | 
				
			||||||
 | 
					                unset($_SESSION["currencyCodeType"]); | 
				
			||||||
 | 
					                unset($_SESSION["PaymentType"]); | 
				
			||||||
 | 
					                unset($_SESSION["nvpReqArray"]); | 
				
			||||||
 | 
					                unset($_SESSION['TOKEN']); | 
				
			||||||
 | 
					                header('Location:list.php'); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            //Display a user friendly Error on the page using any of the following error information returned by PayPal | 
				
			||||||
 | 
					            $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); | 
				
			||||||
 | 
					            $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); | 
				
			||||||
 | 
					            $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); | 
				
			||||||
 | 
					            $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); | 
				
			||||||
 | 
					            $_SESSION['bc_message'] = 'ErrorContactPlatformAdmin'; | 
				
			||||||
 | 
					            unset($_SESSION['bc_course_code']); | 
				
			||||||
 | 
					            unset($_SESSION['bc_course_codetext']); | 
				
			||||||
 | 
					            unset($_SESSION['bc_course_title']); | 
				
			||||||
 | 
					            unset($_SESSION["Payment_Amount"]); | 
				
			||||||
 | 
					            unset($_SESSION["currencyCodeType"]); | 
				
			||||||
 | 
					            unset($_SESSION["PaymentType"]); | 
				
			||||||
 | 
					            unset($_SESSION["nvpReqArray"]); | 
				
			||||||
 | 
					            unset($_SESSION['TOKEN']); | 
				
			||||||
 | 
					            header('Location:list.php'); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					<?php | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * This script is included by main/admin/settings.lib.php when unselecting a plugin | 
				
			||||||
 | 
					 * and is meant to remove things installed by the install.php script in both | 
				
			||||||
 | 
					 * the global database and the courses tables | 
				
			||||||
 | 
					 * @package chamilo.plugin.bigbluebutton | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * Queries | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					require_once dirname(__FILE__) . '/config.php'; | 
				
			||||||
 | 
					Buy_CoursesPlugin::create()->uninstall(); | 
				
			||||||
@ -0,0 +1,45 @@ | 
				
			|||||||
 | 
					<script type='text/javascript' src="../js/funciones.js"></script> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<link rel="stylesheet" type="text/css" href="../resources/plugin.css"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="row"> | 
				
			||||||
 | 
					    <div class="span12"> | 
				
			||||||
 | 
					        <table id="courses_table" class="data_table"> | 
				
			||||||
 | 
					            <tr class="row_odd"> | 
				
			||||||
 | 
					                <th>{{ 'Title'|get_lang }}</th> | 
				
			||||||
 | 
					                <th>{{ 'OfficialCode'|get_lang }}</th> | 
				
			||||||
 | 
					                <th class="ta-center">{{ 'Visible'|get_lang }}</th> | 
				
			||||||
 | 
					                <th class="span2">{{ 'Price'|get_plugin_lang('Buy_CoursesPlugin') }}</th> | 
				
			||||||
 | 
					                <th class="span1 ta-center">{{ 'Option'|get_lang }}</th> | 
				
			||||||
 | 
					            </tr> | 
				
			||||||
 | 
					            {% set i = 0 %} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            {% for course in courses %} | 
				
			||||||
 | 
					                {{ i%2 == 0 ? '<tr class="row_even">' : '<tr class="row_odd">' }} | 
				
			||||||
 | 
					                    {% set i = i + 1 %} | 
				
			||||||
 | 
					                    <td> | 
				
			||||||
 | 
					                        {{ visibility[course.visibility] }} | 
				
			||||||
 | 
					                        <a href="{{ server }}courses/{{course.code}}/index.php">{{course.title}}</a> | 
				
			||||||
 | 
					                        <span class="label label-info">{{ course.visual_code }}</span> | 
				
			||||||
 | 
					                    </td> | 
				
			||||||
 | 
					                    <td> | 
				
			||||||
 | 
					                        {{course.code}} | 
				
			||||||
 | 
					                    </td> | 
				
			||||||
 | 
					                    <td class="ta-center"> | 
				
			||||||
 | 
					                        {% if course.visible == 1 %} | 
				
			||||||
 | 
					                            <input type="checkbox" name="visible" value="1" checked="checked" size="6" /> | 
				
			||||||
 | 
					                        {% else %} | 
				
			||||||
 | 
					                            <input type="checkbox" name="visible" value="1" size="6" /> | 
				
			||||||
 | 
					                        {% endif %} | 
				
			||||||
 | 
					                    </td> | 
				
			||||||
 | 
					                    <td><input type="text" name="price" value="{{course.price}}" class="span1 price" /> {{ currency }}</td> | 
				
			||||||
 | 
					                    <td class=" ta-center" id="course{{ course.id }}"> | 
				
			||||||
 | 
					                        <div class="confirmed"><img src="{{ confirmation_img }}" alt="ok"/></div> | 
				
			||||||
 | 
					                        <div class="modified" style="display:none"><img id="{{course.id_course}}" src="{{ save_img }}" alt="save" class="cursor save"/></div> | 
				
			||||||
 | 
					                    </td> | 
				
			||||||
 | 
					                </tr> | 
				
			||||||
 | 
					            {% endfor %} | 
				
			||||||
 | 
					        </table> | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					<div class="cleared"></div> | 
				
			||||||
 | 
					</div> | 
				
			||||||
@ -0,0 +1,19 @@ | 
				
			|||||||
 | 
					<div class="well sidebar-nav static normal-message"> | 
				
			||||||
 | 
					    <h4> {{title}} </h4> | 
				
			||||||
 | 
					    <ul class="nav nav-list"> | 
				
			||||||
 | 
					        <li> | 
				
			||||||
 | 
					            <a href="src/list.php"> {{ BuyCourses }} </a> | 
				
			||||||
 | 
					        </li> | 
				
			||||||
 | 
					        {% if isAdmin == 'true' %} | 
				
			||||||
 | 
					        <li> | 
				
			||||||
 | 
					            <a href="src/configuration.php"> {{ ConfigurationOfCoursesAndPrices }} </a> | 
				
			||||||
 | 
					        </li> | 
				
			||||||
 | 
					        <li> | 
				
			||||||
 | 
					            <a href="src/paymentsetup.php"> {{ ConfigurationOfPayments }} </a> | 
				
			||||||
 | 
					        </li> | 
				
			||||||
 | 
					        <li> | 
				
			||||||
 | 
					            <a href="src/pending_orders.php"> {{ OrdersPendingOfPayment }} </a> | 
				
			||||||
 | 
					        </li> | 
				
			||||||
 | 
					        {% endif %} | 
				
			||||||
 | 
					    </ul> | 
				
			||||||
 | 
					</div> | 
				
			||||||
@ -0,0 +1,81 @@ | 
				
			|||||||
 | 
					<script type='text/javascript' src="../js/funciones.js"></script> | 
				
			||||||
 | 
					<link rel="stylesheet" type="text/css" href="../resources/plugin.css"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="row"> | 
				
			||||||
 | 
					    <div class="span3"> | 
				
			||||||
 | 
					        <div id="course_category_well" class="well"> | 
				
			||||||
 | 
					            <ul class="nav nav-list"> | 
				
			||||||
 | 
					                <li class="nav-header"><h4>{{ 'SearchFilter'|get_plugin_lang('Buy_CoursesPlugin') }}:</h4></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'Course'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><input type="text" id="course_name" style="width:95%"/></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'MinimumPrice'|get_plugin_lang('Buy_CoursesPlugin') }}: | 
				
			||||||
 | 
					                    <input type="text" id="price_min" class="span1"/> | 
				
			||||||
 | 
					                </li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'MaximumPrice'|get_plugin_lang('Buy_CoursesPlugin') }}: | 
				
			||||||
 | 
					                    <input type="text" id="price_max" class="span1"/> | 
				
			||||||
 | 
					                </li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'Categories'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li> | 
				
			||||||
 | 
					                    <select id="courses_category"> | 
				
			||||||
 | 
					                        <option value="" selected="selected"></option> | 
				
			||||||
 | 
					                        {% for category in categories %} | 
				
			||||||
 | 
					                            <option value="{{ category.code }}">{{ category.name }}</option> | 
				
			||||||
 | 
					                        {% endfor %} | 
				
			||||||
 | 
					                    </select> | 
				
			||||||
 | 
					                </li> | 
				
			||||||
 | 
					                <br /> | 
				
			||||||
 | 
					                <li class="ta-center"> | 
				
			||||||
 | 
					                    <input type="button" class="btn btn-primary" value="Search Courses" id="confirm_filter" /> | 
				
			||||||
 | 
					                </li> | 
				
			||||||
 | 
					            </ul> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					    <div class="span9" id="course_results"> | 
				
			||||||
 | 
					        {% if rmessage == "YES" %} | 
				
			||||||
 | 
					            <div class="{{ class }}"> | 
				
			||||||
 | 
					                {{ responseMessage }} | 
				
			||||||
 | 
					            </div> | 
				
			||||||
 | 
					        {% endif %} | 
				
			||||||
 | 
					        {% for course in courses %} | 
				
			||||||
 | 
					            <div class="well_border span8"> | 
				
			||||||
 | 
					                <div class="row"> | 
				
			||||||
 | 
					                    <div class="span"> | 
				
			||||||
 | 
					                        <div class="thumbnail"> | 
				
			||||||
 | 
					                            <a class="ajax" rel="gb_page_center[778]" title="" href="{{ server }}plugin/buy_courses/src/ajax.php?code={{ course.code }}"> | 
				
			||||||
 | 
					                                <img alt="" src="{{ server }}{{ course.course_img }}"> | 
				
			||||||
 | 
					                            </a> | 
				
			||||||
 | 
					                        </div> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                    <div class="span4"> | 
				
			||||||
 | 
					                        <div class="categories-course-description"> | 
				
			||||||
 | 
					                            <h3>{{ course.title }}</h3> | 
				
			||||||
 | 
					                            <h5>{{ 'Teacher'|get_lang }}: {{ course.teacher }}</h5> | 
				
			||||||
 | 
					                        </div> | 
				
			||||||
 | 
					                        {% if course.enrolled == "YES" %} | 
				
			||||||
 | 
					                            <span class="label label-info">{{ 'TheUserIsAlreadyRegisteredInTheCourse'|get_plugin_lang('Buy_CoursesPlugin') }}</span> | 
				
			||||||
 | 
					                        {% endif %} | 
				
			||||||
 | 
					                        {% if course.enrolled == "TMP" %} | 
				
			||||||
 | 
					                            <span class="label label-warning">{{ 'WaitingToReceiveThePayment'|get_plugin_lang('Buy_CoursesPlugin') }}</span> | 
				
			||||||
 | 
					                        {% endif %} | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                    <div class="span right"> | 
				
			||||||
 | 
					                        <div class="sprice right"> | 
				
			||||||
 | 
					                            {{ course.price }} {{ currency }} | 
				
			||||||
 | 
					                        </div> | 
				
			||||||
 | 
					                        <div class="cleared"></div> | 
				
			||||||
 | 
					                        <div class="btn-toolbar right"> | 
				
			||||||
 | 
					                            <a class="ajax btn btn-primary" title="" href="{{ server }}plugin/buy_courses/src/ajax.php?code={{ course.code }}"> | 
				
			||||||
 | 
					                                {{ 'Description'|get_lang }} | 
				
			||||||
 | 
					                            </a> | 
				
			||||||
 | 
					                            {% if course.enrolled == "NO" %} | 
				
			||||||
 | 
					                                <a class="btn btn-success" title="" href="{{ server }}plugin/buy_courses/src/process.php?code={{ course.id }}"> | 
				
			||||||
 | 
					                                    {{ 'Buy'|get_plugin_lang('Buy_CoursesPlugin') }} | 
				
			||||||
 | 
					                                </a> | 
				
			||||||
 | 
					                            {% endif %} | 
				
			||||||
 | 
					                        </div> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					            </div> | 
				
			||||||
 | 
					        {% endfor %} | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					</div> | 
				
			||||||
@ -0,0 +1,76 @@ | 
				
			|||||||
 | 
					<script type='text/javascript' src="../js/funciones.js"></script> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<link rel="stylesheet" type="text/css" href="../resources/plugin.css"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="row"> | 
				
			||||||
 | 
					    <div class="span12"> | 
				
			||||||
 | 
					        <h3>{{ 'CurrencyType'|get_plugin_lang('Buy_CoursesPlugin') }}:</h3> | 
				
			||||||
 | 
					        <select id="currency_type"> | 
				
			||||||
 | 
					            <option value="" selected="selected">{{ 'SelectACurrency'|get_plugin_lang('Buy_CoursesPlugin') }}</option> | 
				
			||||||
 | 
					            {% for currency in currencies %} | 
				
			||||||
 | 
					                {% if currency.status == 1 %} | 
				
			||||||
 | 
					                    <option value="{{ currency.id_country }}" selected="selected">{{ currency.country_name }} => {{ currency.currency_code }} | 
				
			||||||
 | 
					                    </option> | 
				
			||||||
 | 
					                {% else %} | 
				
			||||||
 | 
					                    <option value="{{ currency.id_country }}">{{ currency.country_name }} => {{ currency.currency_code }}</option> | 
				
			||||||
 | 
					                {% endif %} | 
				
			||||||
 | 
					            {% endfor %} | 
				
			||||||
 | 
					        </select> | 
				
			||||||
 | 
					        <input type="button" id="save_currency" class="btn btn-primary" value="{{ 'Save'|get_lang }}" /> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        {% if paypal_enable == "true" %} | 
				
			||||||
 | 
					            <hr /> | 
				
			||||||
 | 
					            <h3>Configuración PayPal:</h3> | 
				
			||||||
 | 
					                {% if paypal.sandbox == "YES" %} | 
				
			||||||
 | 
					                    {{ 'Sandbox'|get_plugin_lang('Buy_CoursesPlugin') }}: <input type="checkbox" id="sandbox" value="YES" checked="checked"/> | 
				
			||||||
 | 
					                {% else %} | 
				
			||||||
 | 
					                    {{ 'Sandbox'|get_plugin_lang('Buy_CoursesPlugin') }}: <input type="checkbox" id="sandbox" value="YES" /> | 
				
			||||||
 | 
					                {% endif %} | 
				
			||||||
 | 
					            <br /> | 
				
			||||||
 | 
					            API_UserName: <input type="text" id="username" value="{{ paypal.username | e}}" /><br/> | 
				
			||||||
 | 
					            API_Password: <input type="text" id="password" value="{{ paypal.password | e }}"/><br/> | 
				
			||||||
 | 
					            API_Signature: <input type="text" id="signature" value="{{ paypal.signature | e }}"/><br/> | 
				
			||||||
 | 
					            <input type="button" id="save_paypal" class="btn btn-primary" value="{{ 'Save'|get_lang }}"/> | 
				
			||||||
 | 
					        {% endif %} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        {% if transference_enable == "true" %} | 
				
			||||||
 | 
					            <hr /> | 
				
			||||||
 | 
					            <h3>Configuración Transferencia: </h3> | 
				
			||||||
 | 
					            <table id="transference_table" class="data_table"> | 
				
			||||||
 | 
					                <tr class="row_odd"> | 
				
			||||||
 | 
					                <th>{{ 'Name'|get_lang }}</th> | 
				
			||||||
 | 
					                <th>{{ 'BankAccount'|get_plugin_lang('Buy_CoursesPlugin') }}</th> | 
				
			||||||
 | 
					                <th>{{ 'SWIFT'|get_lang }}</th> | 
				
			||||||
 | 
					                <th class="span1 ta-center">{{ 'Option'|get_lang }}</th> | 
				
			||||||
 | 
					                </tr> | 
				
			||||||
 | 
					                {% set i = 0 %} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                {% for transf in transference %} | 
				
			||||||
 | 
					                {{ i%2==0 ? ' | 
				
			||||||
 | 
					                <tr class="row_even">' : ' | 
				
			||||||
 | 
					                <tr class="row_odd">' }} | 
				
			||||||
 | 
					                    {% set i = i + 1 %} | 
				
			||||||
 | 
					                    <td>{{ transf.name | e }}</td> | 
				
			||||||
 | 
					                    <td>{{ transf.account | e }}</td> | 
				
			||||||
 | 
					                    <td>{{ transf.swift | e }}</td> | 
				
			||||||
 | 
					                    <td class="ta-center" id="account{{ transf.id }}"> | 
				
			||||||
 | 
					                        <img src="{{ delete_img }}" class="cursor delete_account" alt="ok"/> | 
				
			||||||
 | 
					                        <input type="hidden" id="id_account{{ transf.id }}" name="id_account{{ transf.id }}" value="{{ transf.id }}" /> | 
				
			||||||
 | 
					                    </td> | 
				
			||||||
 | 
					                </tr> | 
				
			||||||
 | 
					                {% endfor %} | 
				
			||||||
 | 
					                {{ i%2==0 ? ' | 
				
			||||||
 | 
					                <tr class="row_even">' : ' | 
				
			||||||
 | 
					                <tr class="row_odd">' }} | 
				
			||||||
 | 
					                    <td><input class="span4" type="text" id="tname"/></td> | 
				
			||||||
 | 
					                    <td><input type="text" id="taccount"/></td> | 
				
			||||||
 | 
					                    <td><input class="span2" type="text" id="tswift"</td> | 
				
			||||||
 | 
					                    <td class="ta-center"> | 
				
			||||||
 | 
					                        <img class="cursor" id="add_account" src="{{ more_img }}" alt="add account"/> | 
				
			||||||
 | 
					                    </td> | 
				
			||||||
 | 
					                </tr> | 
				
			||||||
 | 
					            </table> | 
				
			||||||
 | 
					        {% endif %} | 
				
			||||||
 | 
					</div> | 
				
			||||||
 | 
					<div class="cleared"></div> | 
				
			||||||
 | 
					</div> | 
				
			||||||
@ -0,0 +1,39 @@ | 
				
			|||||||
 | 
					<script type='text/javascript' src="../js/funciones.js"></script> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<link rel="stylesheet" type="text/css" href="../resources/plugin.css"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="row"> | 
				
			||||||
 | 
					    <div class="span12"> | 
				
			||||||
 | 
					        <table id="orders_table" class="data_table"> | 
				
			||||||
 | 
					            <tr class="row_odd"> | 
				
			||||||
 | 
					                <th class="ta-center">{{ 'ReferenceOrder'|get_plugin_lang('Buy_CoursesPlugin') }}</th> | 
				
			||||||
 | 
					                <th>{{ 'Name'|get_lang }}</th> | 
				
			||||||
 | 
					                <th>{{ 'Title'|get_lang }}</th> | 
				
			||||||
 | 
					                <th class="span2">{{ 'Price'|get_lang }}</th> | 
				
			||||||
 | 
					                <th class="ta-center">{{ 'Date'|get_lang }}</th> | 
				
			||||||
 | 
					                <th class="span2 ta-center">{{ 'Options'|get_lang }}</th> | 
				
			||||||
 | 
					            </tr> | 
				
			||||||
 | 
					            {% set i = 0 %} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            {% for order in pending %} | 
				
			||||||
 | 
					                {{ i%2==0 ? '<tr class="row_even">' : '<tr class="row_odd">' }} | 
				
			||||||
 | 
					                {% set i = i + 1 %} | 
				
			||||||
 | 
					                <td class="ta-center">{{ order.reference }}</td> | 
				
			||||||
 | 
					                <td>{{ order.name }}</td> | 
				
			||||||
 | 
					                <td>{{ order.title }}</td> | 
				
			||||||
 | 
					                <td>{{ order.price }} {{ currency }}</td> | 
				
			||||||
 | 
					                <td class="ta-center">{{ order.date }}</td> | 
				
			||||||
 | 
					                <td class="ta-center" id="order{{ order.cod }}"> | 
				
			||||||
 | 
					                    <img src="{{ confirmation_img }}" alt="ok" class="cursor confirm_order" | 
				
			||||||
 | 
					                         title="{{ 'SubscribeUser'|get_plugin_lang('Buy_CoursesPlugin') }}"/> | 
				
			||||||
 | 
					                       | 
				
			||||||
 | 
					                    <img src="{{ delete_img }}" alt="delete" class="cursor clear_order" | 
				
			||||||
 | 
					                         title="{{ 'DeleteTheOrder'|get_plugin_lang('Buy_CoursesPlugin') }}"/> | 
				
			||||||
 | 
					                </td> | 
				
			||||||
 | 
					            </tr> | 
				
			||||||
 | 
					{% endfor %} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</table> | 
				
			||||||
 | 
					</div> | 
				
			||||||
 | 
					<div class="cleared"></div> | 
				
			||||||
 | 
					</div> | 
				
			||||||
@ -0,0 +1,75 @@ | 
				
			|||||||
 | 
					<script type='text/javascript' src="../js/funciones.js"></script> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<link rel="stylesheet" type="text/css" href="../resources/plugin.css"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="row"> | 
				
			||||||
 | 
					    <div class="span12"> | 
				
			||||||
 | 
					        <div id="course_category_well" class="well span3"> | 
				
			||||||
 | 
					            <ul class="nav nav-list"> | 
				
			||||||
 | 
					                <li class="nav-header"><h4>{{ 'UserInformation'|get_plugin_lang('Buy_CoursesPlugin') }}:</h4></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'Name'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ name }}</h5></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'User'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ user }}</h5></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'Email'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ email }}</h5></li> | 
				
			||||||
 | 
					                <br/> | 
				
			||||||
 | 
					            </ul> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <br/><br/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <div class="well_border span8"> | 
				
			||||||
 | 
					            <div class="row"> | 
				
			||||||
 | 
					                <div class="span"> | 
				
			||||||
 | 
					                    <div class="thumbnail"> | 
				
			||||||
 | 
					                        <a class="ajax" rel="gb_page_center[778]" title="" | 
				
			||||||
 | 
					                           href="{{ server }}plugin/buy_courses/src/ajax.php?code={{ course.code }}"> | 
				
			||||||
 | 
					                            <img alt="" src="{{ server }}{{ course.course_img }}"> | 
				
			||||||
 | 
					                        </a> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					                <div class="span4"> | 
				
			||||||
 | 
					                    <div class="categories-course-description"> | 
				
			||||||
 | 
					                        <h3>{{ course.title }}</h3> | 
				
			||||||
 | 
					                        <h5>{{ 'Teacher'|get_lang }}: {{ course.teacher }}</h5> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					                <div class="span right"> | 
				
			||||||
 | 
					                    <div class="sprice right">{{ course.price }} {{ currency }}</div> | 
				
			||||||
 | 
					                    <div class="cleared"></div> | 
				
			||||||
 | 
					                    <div class="btn-toolbar right"> | 
				
			||||||
 | 
					                        <a class="ajax btn btn-primary" title="" | 
				
			||||||
 | 
					                           href="{{ server }}plugin/buy_courses/src/ajax.php?code={{ course.code }}">{{'Description'|get_lang }} | 
				
			||||||
 | 
					                        </a> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					            </div> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					    <div class="cleared"></div> | 
				
			||||||
 | 
					    <form class="form-horizontal span3 offset4" action="../src/process_confirm.php" method="post"> | 
				
			||||||
 | 
					        <fieldset> | 
				
			||||||
 | 
					            <legend align="center">{{ 'PaymentMethods'|get_plugin_lang('Buy_CoursesPlugin') }}</legend> | 
				
			||||||
 | 
					            <div align="center" class="control-group"> | 
				
			||||||
 | 
					                <div class="controls margin-left-fifty"> | 
				
			||||||
 | 
					                    {% if paypal_enable == "true" %} | 
				
			||||||
 | 
					                        <label class="radio"> | 
				
			||||||
 | 
					                            <input type="radio" id="payment_type-p" name="payment_type" value="PayPal" > Paypal | 
				
			||||||
 | 
					                        </label> | 
				
			||||||
 | 
					                    {% endif %} | 
				
			||||||
 | 
					                    {% if transference_enable == "true" %} | 
				
			||||||
 | 
					                        <label class="radio"> | 
				
			||||||
 | 
					                            <input type="radio" id="payment_type-tra" name="payment_type" value="Transference" > {{ 'BankTransference'|get_plugin_lang('Buy_CoursesPlugin') }} | 
				
			||||||
 | 
					                        </label> | 
				
			||||||
 | 
					                    {% endif %} | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					                </br> | 
				
			||||||
 | 
					                <input type="hidden" name="currency_type" value="{{ currency }}" /> | 
				
			||||||
 | 
					                <input type="hidden" name="server" value="{{ server }}"/> | 
				
			||||||
 | 
					                <input align="center" type="submit" class="btn btn-success" value="{{ 'ConfirmOrder'|get_plugin_lang('Buy_CoursesPlugin') }}"/> | 
				
			||||||
 | 
					            </div> | 
				
			||||||
 | 
					        </fieldset> | 
				
			||||||
 | 
					    </form> | 
				
			||||||
 | 
					    <div class="cleared"></div> | 
				
			||||||
 | 
					</div> | 
				
			||||||
@ -0,0 +1,88 @@ | 
				
			|||||||
 | 
					<script type='text/javascript' src="../js/funciones.js"></script> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<link rel="stylesheet" type="text/css" href="../resources/plugin.css"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="row"> | 
				
			||||||
 | 
					    <div class="span12"> | 
				
			||||||
 | 
					        <div id="course_category_well" class="well span3"> | 
				
			||||||
 | 
					            <ul class="nav nav-list"> | 
				
			||||||
 | 
					                <li class="nav-header"><h4>{{ 'UserInformation'|get_plugin_lang('Buy_CoursesPlugin') }}:</h4></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'Name'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ name | e }}</h5></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'User'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ user | e }}</h5></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'Email'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ email | e}}</h5></li> | 
				
			||||||
 | 
					                <br/> | 
				
			||||||
 | 
					            </ul> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <br/><br/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <div class="well_border span8"> | 
				
			||||||
 | 
					            <div class="row"> | 
				
			||||||
 | 
					                <div class="span"> | 
				
			||||||
 | 
					                    <div class="thumbnail"> | 
				
			||||||
 | 
					                        <a class="ajax" rel="gb_page_center[778]" title="" | 
				
			||||||
 | 
					                           href="{{ server }}plugin/buy_courses/src/ajax.php?code={{ course.code }}"> | 
				
			||||||
 | 
					                            <img src="{{ server }}{{ course.course_img }}"> | 
				
			||||||
 | 
					                        </a> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					                <div class="span4"> | 
				
			||||||
 | 
					                    <div class="categories-course-description"> | 
				
			||||||
 | 
					                        <h3>{{ course.title }}</h3> | 
				
			||||||
 | 
					                        <h5>{{ 'Teacher'|get_lang }}: {{ course.teacher }}</h5> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					                <div class="span right"> | 
				
			||||||
 | 
					                    <div class="sprice right">{{ course.price }} {{ currency }}</div> | 
				
			||||||
 | 
					                    <div class="cleared"></div> | 
				
			||||||
 | 
					                    <div class="btn-toolbar right"> | 
				
			||||||
 | 
					                        <a class="ajax btn btn-primary" title="" | 
				
			||||||
 | 
					                           href="{{ server }}plugin/buy_courses/src/ajax.php?code={{ course.code }}">{{'Description'|get_lang }} | 
				
			||||||
 | 
					                        </a> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					            </div> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					    <div class="cleared"></div> | 
				
			||||||
 | 
					    <hr/> | 
				
			||||||
 | 
					    <div align="center"> | 
				
			||||||
 | 
					        <table class="data_table" style="width:70%"> | 
				
			||||||
 | 
					            <tr> | 
				
			||||||
 | 
					                <th class="ta-center">{{ 'BankAccountInformation'|get_plugin_lang('Buy_CoursesPlugin') }}</th> | 
				
			||||||
 | 
					            </tr> | 
				
			||||||
 | 
					            {% set i = 0 %} | 
				
			||||||
 | 
					            {% for account in accounts %} | 
				
			||||||
 | 
					            {{ i%2==0 ? '<tr class="row_even">' : '<tr class="row_odd">' }} | 
				
			||||||
 | 
					                {% set i = i + 1 %} | 
				
			||||||
 | 
					                <td class="ta-center"> | 
				
			||||||
 | 
					                <font color="#0000FF">{{ account.name | e }}</font><br/> | 
				
			||||||
 | 
					                {% if account.swift != '' %} | 
				
			||||||
 | 
					                SWIFT: <strong>{{ account.swift | e }}</strong><br/> | 
				
			||||||
 | 
					                {% endif %} | 
				
			||||||
 | 
					                {{ 'BankAccount'|get_plugin_lang('Buy_CoursesPlugin') }}: <strong>{{ account.account | e }}</strong><br/> | 
				
			||||||
 | 
					                </td></tr> | 
				
			||||||
 | 
					            {% endfor %} | 
				
			||||||
 | 
					            </table> | 
				
			||||||
 | 
					            <br /> | 
				
			||||||
 | 
					            <div class="normal-message">{{ 'OnceItIsConfirmed,YouWillReceiveAnEmailWithTheBankInformationAndAnOrderReference'|get_plugin_lang('Buy_CoursesPlugin') | e}} | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					    <br/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <form method="post" name="frmConfirm" action="../src/process_confirm.php"> | 
				
			||||||
 | 
					        <input type="hidden" name="payment_type" value="Transference"/> | 
				
			||||||
 | 
					        <input type="hidden" name="name" value="{{ name | e }}"/> | 
				
			||||||
 | 
					        <input type="hidden" name="price" value="{{ course.price }}"/> | 
				
			||||||
 | 
					        <input type="hidden" name="title" value="{{ course.title | e }}"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <div class="btn_next"> | 
				
			||||||
 | 
					            <input class="btn btn-success" type="submit" name="Confirm" value="{{ 'ConfirmOrder'|get_plugin_lang('Buy_CoursesPlugin') }}"/> | 
				
			||||||
 | 
					            <input class="btn btn-danger" type="button" name="Cancel" value="{{ 'CancelOrder'|get_plugin_lang('Buy_CoursesPlugin') }}" id="CancelOrder"/> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					    </form> | 
				
			||||||
 | 
					</div> | 
				
			||||||
 | 
					<div class="cleared"></div> | 
				
			||||||
 | 
					</div> | 
				
			||||||
@ -0,0 +1,63 @@ | 
				
			|||||||
 | 
					<script type='text/javascript' src="../js/funciones.js"></script> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<link rel="stylesheet" type="text/css" href="../resources/plugin.css"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="row"> | 
				
			||||||
 | 
					    <div class="span12"> | 
				
			||||||
 | 
					        <div id="course_category_well" class="well span3"> | 
				
			||||||
 | 
					            <ul class="nav nav-list"> | 
				
			||||||
 | 
					                <li class="nav-header"><h4>{{ 'UserInformation'|get_plugin_lang('Buy_CoursesPlugin') }}:</h4></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'Name'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ name }}</h5></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'User'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ user }}</h5></li> | 
				
			||||||
 | 
					                <li class="nav-header">{{ 'Email'|get_lang }}:</li> | 
				
			||||||
 | 
					                <li><h5>{{ email }}</h5></li> | 
				
			||||||
 | 
					                <br/> | 
				
			||||||
 | 
					            </ul> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <br/><br/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <div class="well_border span8"> | 
				
			||||||
 | 
					            <div class="row"> | 
				
			||||||
 | 
					                <div class="span"> | 
				
			||||||
 | 
					                    <div class="thumbnail"> | 
				
			||||||
 | 
					                        <a class="ajax" rel="gb_page_center[778]" title="" | 
				
			||||||
 | 
					                           href="{{ server }}plugin/buy_courses/function/ajax.php?code={{ course.code }}"> | 
				
			||||||
 | 
					                            <img alt="" src="{{ server }}{{ course.course_img }}"> | 
				
			||||||
 | 
					                        </a> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					                <div class="span4"> | 
				
			||||||
 | 
					                    <div class="categories-course-description"> | 
				
			||||||
 | 
					                        <h3>{{ course.title }}</h3> | 
				
			||||||
 | 
					                        <h5>{{ 'Teacher'|get_lang }}: {{ course.teacher }}</h5> | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					                <div class="span right"> | 
				
			||||||
 | 
					                    <div class="sprice right">{{ course.price }} {{ currency }}</div> | 
				
			||||||
 | 
					                    <div class="cleared"></div> | 
				
			||||||
 | 
					                    <div class="btn-toolbar right"> | 
				
			||||||
 | 
					                        <a class="ajax btn btn-primary" title="" | 
				
			||||||
 | 
					                           href="{{ server }}plugin/buy_courses/function/ajax.php?code={{ course.code }}">{{'Description'|get_lang }}</a> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    </div> | 
				
			||||||
 | 
					                </div> | 
				
			||||||
 | 
					            </div> | 
				
			||||||
 | 
					        </div> | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					    <div class="cleared"></div> | 
				
			||||||
 | 
					    <hr/> | 
				
			||||||
 | 
					    <div align="center"> | 
				
			||||||
 | 
					        <form method="post" name="frmConfirm" action="../src/success.php"> | 
				
			||||||
 | 
					            <input type="hidden" name="paymentOption" value="PayPal"/> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <div class="btn_next"> | 
				
			||||||
 | 
					                <input class="btn btn-success" type="submit" name="Confirm" value="{{ 'ConfirmOrder'|get_plugin_lang('Buy_CoursesPlugin') }}"/> | 
				
			||||||
 | 
					                <input class="btn btn-danger" type="button" name="Cancel" value="{{ 'CancelOrder'|get_plugin_lang('Buy_CoursesPlugin') }}" id="cancel_order"/> | 
				
			||||||
 | 
					            </div> | 
				
			||||||
 | 
					        </form> | 
				
			||||||
 | 
					    </div> | 
				
			||||||
 | 
					    <div class="cleared"></div> | 
				
			||||||
 | 
					</div> | 
				
			||||||