Changeset 2873721
- Timestamp:
- 03/02/2023 02:34:35 PM (3 years ago)
- Location:
- talentlms
- Files:
-
- 28 edited
- 1 copied
-
tags/7.0 (copied) (copied from talentlms/trunk)
-
tags/7.0/README.md (modified) (3 diffs)
-
tags/7.0/TalentLMSLib/lib/TalentLMS.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/ApiError.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/ApiRequestor.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/ApiResource.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/Branch.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/Category.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/Course.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/Group.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/SiteInfo.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/Unit.php (modified) (1 diff)
-
tags/7.0/TalentLMSLib/lib/TalentLMS/User.php (modified) (1 diff)
-
tags/7.0/readme.txt (modified) (2 diffs)
-
tags/7.0/talentlms.php (modified) (2 diffs)
-
trunk/README.md (modified) (3 diffs)
-
trunk/TalentLMSLib/lib/TalentLMS.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/ApiError.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/ApiRequestor.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/ApiResource.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/Branch.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/Category.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/Course.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/Group.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/SiteInfo.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/Unit.php (modified) (1 diff)
-
trunk/TalentLMSLib/lib/TalentLMS/User.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/talentlms.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
talentlms/tags/7.0/README.md
r2828674 r2873721 1 === TalentLMS WordPress plugin === 2 Contributors: panagop, papagel75, simosnomikos 3 Tags: TalentLMS, elearning, lms, lcms, hcm, learning management system 4 Requires at least: 2.0 5 Tested up to: 6.1.1 6 Requires PHP: 5.2.4 7 Stable tag: trunk 8 License: GPLv2 or later 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 1 <a name="readme-top"></a> 2 ## TalentLMS WordPress plugin 10 3 11 This plugin integrates Talentlms with Wordpress. Promote your TalentLMS content through your WordPress site. 4 * **Contributors:** panagop, papagel75, simosnomikos 5 * **Tags:** TalentLMS, elearning, lms, lcms, hcm, learning management system 6 * **Requires at least:** 2.0 7 * **Tested up to:** 6.1.1 8 * **Requires PHP:** 5.2.4 9 * **Stable tag:** 7.0 12 10 13 == Description == 11 This plugin integrates TalentLMS with WordPress. Promote your TalentLMS content through your WordPress site. 12 13 <!-- TABLE OF CONTENTS --> 14 <details open> 15 <summary>Table of Contents</summary> 16 <ol> 17 <li> 18 <a href="#about-the-project">About The Project</a> 19 <ul> 20 <li><a href="#plugin-features">Plugin Features</a></li> 21 </ul> 22 </li> 23 <li> 24 <a href="#getting-started">Getting Started</a> 25 <ul> 26 <li><a href="#installation">Installation</a></li> 27 </ul> 28 </li> 29 <li><a href="#usage">Usage</a></li> 30 <li><a href="#license">License</a></li> 31 <li><a href="#faq">FAQ</a></li> 32 </ol> 33 </details> 34 35 ### About The Project 14 36 15 37 [TalentLMS](http://www.talentlms.com/ "TalentLMS super-easy, cloud-based learning platform") is a cloud-based, lean LMS with an emphasis on usability and easy course creation. With TalentLMS we wanted to create a better learning experience in every way that actually matters – and we are excited about this new offering. The product focuses on small but growing organizations. There are a number of obstacles that prohibit small organizations from using elearning. To be productive, small businesses need a number of tools and several related services such as setup and maintenance, course creation and the support of end-users. All these require ample time, resources and money. It comes as no surprise that most small organizations find elearning a non-viable pursuit and prefer on-job or informal training methods. … … 20 42 * [TalentLMS - Get started in 5'](https://www.talentlms.com/blog/talentlms-get-started-in-5/ "TalentLMS - Get started in 5'") 21 43 22 ## Plugin Features ##44 ### Plugin Features 23 45 24 46 * List your TalentLMS courses and their content in WordPress. 25 47 * Integrate your TalentLMS courses as WooCommerce products 26 48 27 == Installation == 49 ## Getting Started 28 50 29 # To Install:#51 ### Installation 30 52 31 53 1. Download TalentLMS WordPress plugin 32 1. Unzip the file into a folder on your hard drive33 1. Upload `/talentlms/` folder to the `/wp-content/plugins/` folder on your site34 1. Visit your WordPress _Administration -> Plugins_ and activate TalentLMS WordPress plugin54 2. Unzip the file into a folder on your hard drive 55 3. Upload `/talentlms/` folder to the `/wp-content/plugins/` folder on your site 56 4. Visit your WordPress _Administration -> Plugins_ and activate TalentLMS WordPress plugin 35 57 36 58 Alternatively you can automatically install TalentLMS WordPress plugin from the WordPress Plugin Directory. 37 59 38 # Usage:#60 ## Usage 39 61 40 62 * Once you have activated the plugin, provide your TalentLMS Domain name and TalentLMS API key. … … 45 67 * Insert TalentLMS widget in any registered sidebar of your site. 46 68 47 == Frequently Asked Questions == 69 ## License 70 71 Distributed under the [GPLv2 or later License](http://www.gnu.org/licenses/gpl-2.0.html). See `LICENSE.txt` for more information. 72 73 ## FAQ 48 74 49 75 If you have a question or any feedback you want to share send us an email at [support@talentlms.com](mailto:support@talentlms.com 'support') 50 76 51 == Screenshots == 52 1. Course catalog `assets/screenshot-1.png` 53 2. Admin dashboard `assets/screenshot-2.png` 54 3. Integration pages `assets/screenshot-3.png` 55 56 == Changelog == 57 58 = 6.6.9.5 = 59 60 * Updated the readme file 61 62 = 6.6.9.4 = 63 64 * Added support for Wordpress 5.8 and PHP 7.4 65 * Fix category's filter in shortcode 66 * Fix a bug when the 12-hour format is used 67 * Improve password generation 68 * Fix checkbox filter on courses page 69 * Use the latest TalentLMS PHP wrapper 70 71 = 6.6.9.3 = 72 73 * Fix that respects db prefix on course re-sync action 74 * Update wording on course navigation button 75 76 = 6.6.9.2 = 77 78 * Fix double firstname whitespace sanitization 79 80 = 6.6.9.1 = 81 82 * Free courses upon order completion fix 83 84 = 6.6.9 = 85 86 * Payment gateway cancellation proccess fix 87 88 = 6.6.8 = 89 90 * Development functions prefixed. 91 92 = 6.6.7 = 93 94 * Metadata fix. 95 96 = 6.6.6 = 97 98 * A user should be able to purchase only one instance of a course. 99 100 = 6.6.5 = 101 102 * Drop plugin tables from the database when a user deletes the plugin 103 104 = 6.6.4 = 105 106 * Upgrade script bugfix 107 108 = 6.6.3 = 109 110 * Assets versioning 111 * Upgrade script 112 113 = 6.6 = 114 115 * Replace all course pictures, to big avatar 116 * Course list, shows only active courses that are visible on catalog. 117 * Improve re-sync functionality. 118 * Improve users enrollment on courses. 119 * Improve thank you page in order details list, go to course page link addition. 120 * TalentLMS widget addition. 121 * Bugfix on woocommerce checkout page, when trying to create a customer account. 122 * Bugfix on plugin activation. 123 124 = 6.5 = 125 126 * Remove deprecated signup page 127 * Improve domain/api key validation 128 129 = 6.4 = 130 131 * Provision for WooCommerce customer reset password 132 * Course format fix 133 * Setting domain/api key issue 134 135 = 6.3 = 136 137 * Woocommerce integration handle non talentlms products 138 * Provision for WooCommerce customer change password 139 * Handle existing not talentlms customers 140 * Error logs 141 142 = 6.2 = 143 144 * Woocommerce integration handle non talentlms products 145 * Handling of deleted products 146 147 148 = 6.1 = 149 150 * Removed deprecated shortcode [talentlms-signup] 151 152 = 6.0 = 153 154 * New improved version 155 * Better TalentLMS WooCommerce integration 156 * Removed obsolete features 157 158 = 5.3.3 = 159 160 * Fixed WooCommerce error handling 161 162 = 5.3.2 = 163 164 * Fixed notices 165 166 = 5.3.1 = 167 168 * Fixed issue when unsetting woocommerce user integration 169 170 = 5.3.0 = 171 172 * Fixed synced content 173 174 = 5.2.9 = 175 176 * Fixed warning in integrations page 177 178 = 5.2.8 = 179 180 * Do not show hidden from catalog courses in [talentlms-courses] shortcode 181 182 = 5.2.7 = 183 184 * Shortcodes correctly appear in content 185 186 = 5.2.6 = 187 188 * Fixed WooCommerce integration user details 189 190 = 5.2.5 = 191 192 * Fixed WooCommerce integration selecting courses 193 194 = 5.2.4 = 195 196 * Fixed error handling 197 198 = 5.2.3 = 199 200 * Registering users bug fix 201 202 = 5.2.2 = 203 204 * Shortcodes correctly appear in content 205 206 = 5.2.1 = 207 208 * Bug fix in forgot credentials form 209 210 = 5.2 = 211 212 * WooCommerce assign user to course (compatibility issue) 213 214 = 5.1 = 215 216 * WooCommerce assign user to course 217 218 = 5.0 = 219 220 * Updated WooCommerce integration options 221 222 = 4.9 = 223 224 * Login integration option 225 226 = 4.8.2 = 227 228 * Bug fixes for WooCommerce integration 229 230 = 4.8 = 231 232 * Various bug fixes 233 234 = 4.7.1 = 235 236 * Login redirection issue 237 238 = 4.7 = 239 240 * Login fixes 241 242 = 4.6.3 = 243 244 * Synced users get fixed password, their login 245 * Login redirects fixes (3) 246 247 = 4.6.2 = 248 249 * Login redirects fixes (2) 250 251 = 4.6.1 = 252 253 * Login redirects fixes 254 255 = 4.6 = 256 257 * Woocommerce integration, orders get autocompleted 258 * Login fixes 259 260 = 4.5.8 = 261 262 * Woocommerce integration, when admin marks order as complete user gets assigned to the course 263 264 = 4.5.7 = 265 266 * Lastest version of TalentLMS lib 267 268 = 4.5.6 = 269 270 * Fixed TalentLMS wp_login wp_logout for widget 271 272 = 4.5.5 = 273 274 * Fixed TalentLMS sync passwords issue 275 * Fixed TalentLMS wp_login wp_logout 276 277 = 4.5.4 = 278 279 * Updated CDNs for jquery boostrap datatables 280 281 = 4.5.3 = 282 283 * Course list does not show inactive courses 284 285 = 4.5.2 = 286 287 * Fixed issue about redirect to after TalentLMS logout 288 289 = 4.5.1 = 290 291 * Fixed issue about redirect to TalentLMS after login 292 293 = 4.5 = 294 295 * Fixed issue about TalentLMS user login (wordpress authentication) 296 * Signup with WooCommerce, also signs up with TalentLMS 297 298 = 4.4.6 = 299 300 * Fixed issue about empty custom fields 301 302 = 4.4.4 = 303 304 * WooCommerce integration login 305 306 = 4.4.4 = 307 308 * WooCommerce integration no active/hidden from catalog courses 309 310 = 4.4.3 = 311 312 * Fixed subscriber permissions issue 313 314 = 4.4.2 = 315 316 * Minor bugfixes 317 318 = 4.4.1 = 319 320 * Minor bugfixes 321 322 = 4.4 = 323 324 * WooCommerce integration 325 * Minor bugfixes 326 327 = 4.3 = 328 329 * When redirected (logged in) to TalentLMS, new option on logout from TaletLMS behavior 330 331 = 4.2.1 = 332 333 * Section unit types 334 335 = 4.2 = 336 337 * New unit types integratd to plugin 338 339 = 4.0 = 340 341 * Various bug fixes 342 * Complete WordPress and TalentLMS signup integration 343 * Complete WordPress and TalentLMS login integration 344 * Redesigned course catalog and admin panel 345 * Subscriber panel in WordPress 346 347 = 3.18.1 = 348 349 * Avoid conflict with some themes 350 351 = 3.18 = 352 353 * Creating a TalentLMS user when a user signs up to WP full registration process 354 355 = 3.17 = 356 357 * Bugfix for option to create TalentLMS user when a user signs up to WP 358 359 = 3.16 = 360 361 * Option to create TalentLMS user when a user signs up to WP 362 * WP subscriber/TalentLMS user, WP/TalentLMS Profile 363 364 = 3.15 = 365 366 * jquery ui update 367 368 = 3.13 = 369 370 * New signup methods supported 371 372 = 3.12 = 373 374 * Edit TalentLMS CSS bug fixed 375 376 = 3.11 = 377 378 * Sync users bugs fixed 379 * Forgot login/pass bugs fixed 380 381 = 3.10 = 382 383 * New version of TalentLMSLib 384 385 = 3.9.1 = 386 387 * Signup issues fixed 388 389 = 3.9 = 390 391 * Forgot login/password checkboxes 392 393 = 3.8 = 394 395 * Forgot login/password bug fix 396 397 = 3.7 = 398 399 * More signup methods supported 400 401 = 3.6 = 402 403 * Bugfix in custom fields 404 405 = 3.5 = 406 407 * Bugfix in custom fields in signup page in case of multiple select custom fields 408 409 = 3.4 = 410 411 * Various typos fixed 412 413 = 3.3 = 414 415 * Fixes issue with conflicts with other WP plugin due to query strings 416 417 = 3.2 = 418 419 * New version of TalentLMS PHP library 420 421 = 3.0 = 422 423 * TalentLMS users shortcode 424 * Sync TalentLMS content with WP 425 426 = 2.2 = 427 428 * Building categories tree recursively. No longer depending to libxml PHP extension 429 430 = 2.1 = 431 432 * Plugin connects to TalentLMS domain map, if exists, instead of talentLMS domain 433 * Units in course, link to TalentLMS units (redirect without second login) 434 435 = 2.0 = 436 437 * CSS additions 438 439 = 1.9.1 = 440 441 * When purchasing a course, does not redirect to PayPal 442 443 = 1.9 = 444 445 * Single course view, unit urls when user is logged in. 446 447 = 1.8 = 448 449 * Users page which lists instructors and instructor details 450 * Customizable template for users page 451 * Upon plugin installation courses, users and signup WordPress page with shortcodes are created. 452 * Error messages of each TalentLMS API call 453 * Clean CSS rules defined for each TalentLMS element 454 * New version of TalentLMS API PHP library 455 456 = 1.7 = 457 458 * Tree like representation of TalentLMS categories 459 460 = 1.6 = 461 462 * Single course template options 463 * Courses list template options 464 465 = 1.5 = 466 467 * Course thumbnails static urls 468 469 = 1.4 = 470 471 * TalentLMS signup supports TalentLMS custom fields 472 473 = 1.3 = 474 475 * Content to WordPress pages is inserted in its relative position to shortcodes. 476 * Show instructors' names in single course page 477 * Certification kai Certification duration removed from course page 478 479 = 1.2 = 480 481 * TalentLMS CSS editor in Wordpress Administration Panel 482 * TalentLMS Option for customizition of TalentLMS Plugins 483 * Courses per page 484 * Templates for course page 485 * Action after signup 486 * Caching of TalentLMS data 487 * Login modal in single course page 488 * Users are prompted to buy TalentLMS course instead of just getting it 489 490 = 1.1 = 491 492 * Users can go to courses in TalentLMS 493 494 = 1.0 (Initial release) = 495 496 * Administration Panel for TalentLMS management 497 * Login to TalentLMS widget for Wordpress 498 * shortcode for signup page to TalentLMS 499 * shortcode for listing courses from TalentLMS 500 501 == Upgrade Notice == 502 503 = 3.17.1 = 504 505 * Help tabs information 506 507 = 3.14 = 508 509 * Signup custom fields bug fix 510 511 = 3.1 = 512 513 * Various minor bugfixes 514 515 = 3.0 = 516 517 * Updated version of TalentLMS library 518 * Various minor/major bugfixes 519 520 = 2.0 = 521 522 * Users can buy categories 523 524 = 1.9.1 = 525 526 * When purchasing a course, does not redirect to PayPal fixed 527 528 = 1.8 = 529 530 Various security issues 531 532 = 1.6 = 533 534 Courses pagination does not include inactive or hidden from catalog courses 535 536 = 1.3 = 537 538 Mishandling of inactive and not-for-catalog courses 539 Bottom pagination bug fix 540 541 = 1.1 = 542 543 Login fixed 544 When logged in user first name/last name appear correctly 545 Course prices appear correctly 77 <p align="right">(<a href="#readme-top">back to top</a>)</p> -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS.php
r2750739 r2873721 1 1 <?php 2 2 3 if (!function_exists('curl_init')){4 throw new Exception('TalentLMS API needs the CURL PHP extension.');3 if (!function_exists('curl_init')) { 4 throw new Exception('TalentLMS API needs the CURL PHP extension.'); 5 5 } 6 6 7 if (!function_exists('json_decode')){8 throw new Exception('TalentLMS API needs the JSON PHP extension.');7 if (!function_exists('json_decode')) { 8 throw new Exception('TalentLMS API needs the JSON PHP extension.'); 9 9 } 10 10 11 abstract class TalentLMS{ 12 public static $apiKey; 13 public static $domain; 14 public static $apiBase; 15 public static $apiProtocol; 11 abstract class TalentLMS 12 { 13 public static $apiKey; 14 public static $domain; 15 public static $apiBase; 16 public static $apiProtocol; 16 17 17 const VERSION = '1.0';18 const PREFIX = 'WpPlugin';18 const VERSION = '1.0'; 19 const PREFIX = 'WpPlugin'; 19 20 20 public static function getApiKey(){ 21 return self::$apiKey; 22 } 21 public static function getApiKey() 22 { 23 return self::$apiKey; 24 } 23 25 24 public static function setApiKey($apiKey){ 25 self::$apiKey = $apiKey; 26 } 26 public static function setApiKey($apiKey) 27 { 28 self::$apiKey = $apiKey; 29 } 27 30 28 public static function getDomain(){ 29 return self::$domain; 30 } 31 public static function getDomain() 32 { 33 return self::$domain; 34 } 31 35 32 public static function setProtocol($protocol){ 33 if($protocol == 'http' || $protocol == 'https'){ 34 self::$apiProtocol = $protocol; 35 } 36 } 36 public static function setProtocol($protocol) 37 { 38 if ($protocol == 'http' || $protocol == 'https') { 39 self::$apiProtocol = $protocol; 40 } 41 } 37 42 38 public static function setDomain($domain){ 39 $domain = str_replace('http://', '', $domain); 40 $domain = str_replace('https://', '', $domain); 41 $domain = str_replace('/', '', $domain); 42 43 self::$domain = $domain; 43 public static function setDomain($domain) 44 { 45 $domain = str_replace('http://', '', $domain); 46 $domain = str_replace('https://', '', $domain); 47 $domain = str_replace('/', '', $domain); 48 49 self::$domain = $domain; 44 50 45 if(!isset(self::$apiProtocol) || (self::$apiProtocol != 'http' && self::$apiProtocol != 'https')){46 self::$apiProtocol = 'https';47 }51 if (!isset(self::$apiProtocol) || (self::$apiProtocol != 'http' && self::$apiProtocol != 'https')) { 52 self::$apiProtocol = 'https'; 53 } 48 54 49 self::$apiBase = self::$apiProtocol.'://'.$domain.'/api/v1'; 50 } 51 52 public static function getApiBase(){ 53 return self::$apiBase; 54 } 55 56 public static function setApiBase($apiBase){ 57 self::$apiBase = $apiBase; 58 } 55 self::$apiBase = self::$apiProtocol.'://'.$domain.'/api/v1'; 56 } 57 58 public static function getApiBase() 59 { 60 return self::$apiBase; 61 } 62 63 public static function setApiBase($apiBase) 64 { 65 self::$apiBase = $apiBase; 66 } 59 67 } 60 68 -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/ApiError.php
r1682753 r2873721 1 1 <?php 2 2 3 class TalentLMS_ApiError extends Exception{ 4 5 public function __construct($message=null, $http_status=null, $http_body=null, $json_body=null){ 6 parent::__construct($message); 7 $this->http_status = $http_status; 8 $this->http_body = $http_body; 9 $this->json_body = $json_body; 10 } 3 class TalentLMS_ApiError extends Exception 4 { 5 6 public function __construct($message = null, $http_status = null, $http_body = null, $json_body = null) 7 { 8 parent::__construct($message); 9 $this->http_status = $http_status; 10 $this->http_body = $http_body; 11 $this->json_body = $json_body; 12 } 11 13 12 public function getHttpStatus(){ 13 return $this->http_status; 14 } 14 public function getHttpStatus() 15 { 16 return $this->http_status; 17 } 15 18 16 public function getHttpBody(){ 17 return $this->http_body; 18 } 19 public function getHttpBody() 20 { 21 return $this->http_body; 22 } 19 23 20 public function getJsonBody(){ 21 return $this->json_body; 22 } 24 public function getJsonBody() 25 { 26 return $this->json_body; 27 } 23 28 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/ApiRequestor.php
r1885455 r2873721 1 1 <?php 2 2 3 class TalentLMS_ApiRequestor{ 4 5 public static function request($method, $url, $params=null){ 6 list($rbody, $rcode) = self::_requestRaw($method, $url, $params); 7 $response = self::_interpretResponse($rbody, $rcode); 8 return $response; 9 } 10 11 private static function _interpretResponse($rbody, $rcode){ 12 try{ 13 $response = json_decode($rbody, true); 14 } 15 catch(Exception $e){ 16 throw new TalentLMS_ApiError("Invalid response body from API: ".$rbody." (HTTP response code was ".$rcode.")", $rcode, $rbody); 17 } 18 19 if($rcode < 200 || $rcode >= 300){ 20 self::_handleApiError($rbody, $rcode, $response); 21 } 22 23 return $response; 24 } 25 26 private static function _requestRaw($method, $url, $params){ 27 $myApiKey = TalentLMS::$apiKey; 28 $myApiBase = TalentLMS::$apiBase; 3 class TalentLMS_ApiRequestor 4 { 5 6 public static function request($method, $url, $params = null) 7 { 8 list($rbody, $rcode) = self::_requestRaw($method, $url, $params); 9 $response = self::_interpretResponse($rbody, $rcode); 10 return $response; 11 } 12 13 private static function _interpretResponse($rbody, $rcode) 14 { 15 try { 16 $response = json_decode($rbody, true); 17 } catch (Exception $e) { 18 throw new TalentLMS_ApiError("Invalid response body from API: ".$rbody." (HTTP response code was ".$rcode.")", $rcode, $rbody); 19 } 20 21 if ($rcode < 200 || $rcode >= 300) { 22 self::_handleApiError($rbody, $rcode, $response); 23 } 24 25 return $response; 26 } 27 28 private static function _requestRaw($method, $url, $params) 29 { 30 $myApiKey = TalentLMS::$apiKey; 31 $myApiBase = TalentLMS::$apiBase; 29 32 30 if(!$myApiKey){31 throw new TalentLMS_ApiError('No API key provided. (HINT: set your API key using "TalentLMS::setApiKey(\'API-KEY\')").');32 }33 34 if(!$myApiBase){35 throw new TalentLMS_ApiError('No domain provided. (HINT: set your domain using "TalentLMS::setDomain(\'DOMAIN\')").');36 }37 38 $absUrl = self::_apiUrl($url);33 if (!$myApiKey) { 34 throw new TalentLMS_ApiError('No API key provided. (HINT: set your API key using "TalentLMS::setApiKey(\'API-KEY\')").'); 35 } 36 37 if (!$myApiBase) { 38 throw new TalentLMS_ApiError('No domain provided. (HINT: set your domain using "TalentLMS::setDomain(\'DOMAIN\')").'); 39 } 40 41 $absUrl = self::_apiUrl($url); 39 42 40 $ua = array('bindings_version' => TalentLMS::VERSION,41 'lang' => 'php',42 'lang_version' => phpversion(),43 'publisher' => 'talentlms',44 'uname' => php_uname());45 46 $headers = array('X-Talentlms-Client-User-Agent: '.json_encode($ua),47 'User-Agent: '.TalentLMS::PREFIX.' Talentlms/v1 PhpBindings/'.TalentLMS::VERSION);48 49 list($rbody, $rcode) = self::_curlRequest($method, $absUrl, $headers, $params, $myApiKey);50 return array($rbody, $rcode);51 }52 53 protected static function _apiUrl($url=''){ 54 $apiBase = TalentLMS::$apiBase; 55 return $apiBase.$url;56 } 57 58 private static function _curlRequest($method, $absUrl, $headers, $params, $myApiKey){ 59 $curl = curl_init(); 60 $method = strtolower($method); 61 $opts = array();62 63 if($method == 'get'){ 64 $opts[CURLOPT_HTTPGET] = 1; 65 } 66 else if($method == 'post'){ 67 $opts[CURLOPT_POST] = 1; 68 69 if($params != null){ 70 $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); 71 } 72 }73 else{74 throw new TalentLMS_ApiError("Unsupported method ".$method);75 }76 77 $opts[CURLOPT_URL] = $absUrl;78 $opts[CURLOPT_RETURNTRANSFER] = true;79 $opts[CURLOPT_CONNECTTIMEOUT] = 30;80 $opts[CURLOPT_TIMEOUT] = 80;81 $opts[CURLOPT_RETURNTRANSFER] = true;82 $opts[CURLOPT_HTTPHEADER] = $headers;83 $opts[CURLOPT_USERPWD] = $myApiKey.':';84 $opts[CURLOPT_SSL_VERIFYPEER] = false;85 $opts[CURLOPT_HTTPAUTH] = CURLAUTH_BASIC;86 87 curl_setopt_array($curl, $opts);88 $rbody = curl_exec($curl);89 90 if($rbody === false || $rbody == FALSE){91 $errno = curl_errno($curl);92 $message = curl_error($curl);93 curl_close($curl);94 self::_handleCurlError($errno, $message);95 }96 97 $rcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);98 curl_close($curl);43 $ua = array('bindings_version' => TalentLMS::VERSION, 44 'lang' => 'php', 45 'lang_version' => phpversion(), 46 'publisher' => 'talentlms', 47 'uname' => php_uname()); 48 49 $headers = array('X-Talentlms-Client-User-Agent: '.json_encode($ua), 50 'User-Agent: '.TalentLMS::PREFIX.' Talentlms/v1 PhpBindings/'.TalentLMS::VERSION); 51 52 list($rbody, $rcode) = self::_curlRequest($method, $absUrl, $headers, $params, $myApiKey); 53 return array($rbody, $rcode); 54 } 55 56 protected static function _apiUrl($url = '') 57 { 58 $apiBase = TalentLMS::$apiBase; 59 return $apiBase.$url; 60 } 61 62 private static function _curlRequest($method, $absUrl, $headers, $params, $myApiKey) 63 { 64 $curl = curl_init(); 65 $method = strtolower($method); 66 $opts = array(); 67 68 if ($method == 'get') { 69 $opts[CURLOPT_HTTPGET] = 1; 70 } elseif ($method == 'post') { 71 $opts[CURLOPT_POST] = 1; 72 73 if ($params != null) { 74 $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); 75 } 76 } else { 77 throw new TalentLMS_ApiError("Unsupported method ".$method); 78 } 79 80 $opts[CURLOPT_URL] = $absUrl; 81 $opts[CURLOPT_RETURNTRANSFER] = true; 82 $opts[CURLOPT_CONNECTTIMEOUT] = 30; 83 $opts[CURLOPT_TIMEOUT] = 80; 84 $opts[CURLOPT_RETURNTRANSFER] = true; 85 $opts[CURLOPT_HTTPHEADER] = $headers; 86 $opts[CURLOPT_USERPWD] = $myApiKey.':'; 87 $opts[CURLOPT_SSL_VERIFYPEER] = false; 88 $opts[CURLOPT_HTTPAUTH] = CURLAUTH_BASIC; 89 90 curl_setopt_array($curl, $opts); 91 $rbody = curl_exec($curl); 92 93 if ($rbody === false || $rbody == false) { 94 $errno = curl_errno($curl); 95 $message = curl_error($curl); 96 curl_close($curl); 97 self::_handleCurlError($errno, $message); 98 } 99 100 $rcode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 101 curl_close($curl); 99 102 100 return array($rbody, $rcode); 101 } 102 103 protected static function _handleCurlError($errno, $message){ 104 $apiBase = TalentLMS::$apiBase; 105 106 if($errno == CURLE_COULDNT_CONNECT || $errno == CURLE_COULDNT_RESOLVE_HOST || $errno == CURLE_OPERATION_TIMEOUTED){ 107 $msg = "Could not connect to TalentLMS (".$apiBase."). Please check your internet connection and try again."; 108 } 109 else{ 110 $msg = "Unexpected error while communicating with TalentLMS. Please try again."; 111 } 112 113 $msg .= "\n\n(Network error: ".$message.")"; 114 throw new TalentLMS_ApiError($msg); 115 } 116 117 protected static function _handleApiError($rbody, $rcode, $response){ 118 if(!is_array($response) || !isset($response['error'])){ 119 throw new TalentLMS_ApiError("Invalid response object from API: ".$rbody." (HTTP response code was: ".$rcode.")", $rcode, $rbody, $response); 120 } 103 return array($rbody, $rcode); 104 } 105 106 protected static function _handleCurlError($errno, $message) 107 { 108 $apiBase = TalentLMS::$apiBase; 109 110 if ($errno == CURLE_COULDNT_CONNECT || $errno == CURLE_COULDNT_RESOLVE_HOST || $errno == CURLE_OPERATION_TIMEOUTED) { 111 $msg = "Could not connect to TalentLMS (".$apiBase."). Please check your internet connection and try again."; 112 } else { 113 $msg = "Unexpected error while communicating with TalentLMS. Please try again."; 114 } 115 116 $msg .= "\n\n(Network error: ".$message.")"; 117 throw new TalentLMS_ApiError($msg); 118 } 119 120 protected static function _handleApiError($rbody, $rcode, $response) 121 { 122 if (!is_array($response) || !isset($response['error'])) { 123 throw new TalentLMS_ApiError("Invalid response object from API: ".$rbody." (HTTP response code was: ".$rcode.")", $rcode, $rbody, $response); 124 } 121 125 122 throw new TalentLMS_ApiError(isset($response['error']['message']) ? $response['error']['message'] : null, $rcode, $rbody, $response);123 }126 throw new TalentLMS_ApiError(isset($response['error']['message']) ? $response['error']['message'] : null, $rcode, $rbody, $response); 127 } 124 128 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/ApiResource.php
r2750739 r2873721 1 1 <?php 2 2 3 abstract class TalentLMS_ApiResource{ 4 5 protected static function _scopedRetrieve($class, $id){ 6 $url = self::_instanceUrl($class, $id); 7 $response = TalentLMS_ApiRequestor::request('get', $url); 8 9 return $response; 10 } 11 12 protected static function _scopedAll($class){ 13 $url = self::_classUrl($class); 14 $response = TalentLMS_ApiRequestor::request('get', $url); 15 16 return $response; 17 } 18 19 protected static function _scopedLogin($class, $params){ 20 self::_validateCall('login', $class, $params); 21 $url = self::_postUrl('login'); 22 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 23 24 return $response; 25 } 26 27 protected static function _scopedLogout($class, $params){ 28 self::_validateCall('logout', $class, $params); 29 $url = self::_postUrl('logout'); 30 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 31 32 return $response; 33 } 34 35 protected static function _scopedSignup($class, $params){ 36 self::_validateCall('signup', $class, $params); 37 $url = self::_postUrl('signup'); 38 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 39 40 return $response; 41 } 42 43 protected static function _scopedAddUserToCourse($class, $params){ 44 self::_validateCall('addUser', $class, $params); 45 $url = self::_postUrl('addUser'); 46 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 47 48 return $response; 49 } 50 51 protected static function _scopedRemoveUserFromCourse($class, $params){ 52 $url = self::_instanceUrlByParams('removeUserFromCourse', $params); 53 $response = TalentLMS_ApiRequestor::request('get', $url); 54 55 return $response; 56 } 57 58 protected static function _scopedResetUserProgress($class, $params){ 59 $url = self::_instanceUrlByParams('resetUserProgress', $params); 60 $response = TalentLMS_ApiRequestor::request('get', $url); 61 62 return $response; 63 } 64 65 protected static function _scopedGotoCourse($class, $params){ 66 $url = self::_instanceUrlByParams('gotoCourse', $params); 67 $response = TalentLMS_ApiRequestor::request('get', $url); 68 69 return $response; 70 } 71 72 protected static function _scopedBuyCourse($class, $params){ 73 self::_validateCall('buyCourse', $class, $params); 74 $url = self::_postUrl('buyCourse'); 75 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 76 77 return $response; 78 } 79 80 protected static function _scopedBuyCategoryCourses($class, $params){ 81 self::_validateCall('buyCategoryCourses', $class, $params); 82 $url = self::_postUrl('buyCategoryCourses'); 83 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 84 85 return $response; 86 } 87 88 protected static function _scopedRetrieveLeafsAndCourses($class, $id){ 89 $url = self::_instanceUrlByMethodName('leafsAndCourses', $id); 90 $response = TalentLMS_ApiRequestor::request('get', $url); 91 92 return $response; 93 } 94 95 protected static function _scopedGetCustomRegistrationFields($class){ 96 $url = self::_classUrlByMethodName('customRegistrationFields'); 97 $response = TalentLMS_ApiRequestor::request('get', $url); 98 99 return $response; 100 } 101 102 protected static function _scopedSetUserStatus($class, $params){ 103 $url = self::_instanceUrlByParams('userSetStatus', $params); 104 $response = TalentLMS_ApiRequestor::request('get', $url); 105 106 return $response; 107 } 108 109 protected static function _scopedSetBranchStatus($class, $params){ 110 $url = self::_instanceUrlByParams('branchSetStatus', $params); 111 $response = TalentLMS_ApiRequestor::request('get', $url); 112 113 return $response; 114 } 115 116 protected static function _scopedAddUserToGroup($class, $params){ 117 $url = self::_instanceUrlByParams('addUserToGroup', $params); 118 $response = TalentLMS_ApiRequestor::request('get', $url); 119 120 return $response; 121 } 122 123 protected static function _scopedRemoveUserFromGroup($class, $params){ 124 $url = self::_instanceUrlByParams('removeUserFromGroup', $params); 125 $response = TalentLMS_ApiRequestor::request('get', $url); 126 127 return $response; 128 } 129 130 protected static function _scopedAddCourseToGroup($class, $params){ 131 $url = self::_instanceUrlByParams('addCourseToGroup', $params); 132 $response = TalentLMS_ApiRequestor::request('get', $url); 133 134 return $response; 135 } 136 137 protected static function _scopedAddUserToBranch($class, $params){ 138 $url = self::_instanceUrlByParams('addUserToBranch', $params); 139 $response = TalentLMS_ApiRequestor::request('get', $url); 140 141 return $response; 142 } 143 144 protected static function _scopedRemoveUserFromBranch($class, $params){ 145 $url = self::_instanceUrlByParams('removeUserFromBranch', $params); 146 $response = TalentLMS_ApiRequestor::request('get', $url); 147 148 return $response; 149 } 150 151 protected static function _scopedAddCourseToBranch($class, $params){ 152 $url = self::_instanceUrlByParams('addCourseToBranch', $params); 153 $response = TalentLMS_ApiRequestor::request('get', $url); 154 155 return $response; 156 } 157 158 protected static function _scopedForgotUsername($class, $params){ 159 $url = self::_instanceUrlByParams('forgotUsername', $params); 160 $response = TalentLMS_ApiRequestor::request('get', $url); 161 162 return $response; 163 } 164 165 protected static function _scopedForgotPassword($class, $params){ 166 $url = self::_instanceUrlByParams('forgotPassword', $params); 167 $response = TalentLMS_ApiRequestor::request('get', $url); 168 169 return $response; 170 } 171 172 protected static function _scopedExtendedUserRetrieve($class, $params){ 173 $url = self::_instanceUrlByParams('users', $params); 174 $response = TalentLMS_ApiRequestor::request('get', $url); 175 176 return $response; 177 } 178 179 protected static function _scopedGetRateLimit($class){ 180 $url = self::_instanceUrlByParams('getRateLimit', array()); 181 $response = TalentLMS_ApiRequestor::request('get', $url); 182 183 return $response; 184 } 185 186 protected static function _scopedGetUsersProgressInUnits($class, $params){ 187 $url = self::_instanceUrlByParams('getUsersProgressInUnits', $params); 188 $response = TalentLMS_ApiRequestor::request('get', $url); 189 190 return $response; 191 } 192 193 protected static function _scopedGetTestAnswers($class, $params){ 194 $url = self::_instanceUrlByParams('getTestAnswers', $params); 195 $response = TalentLMS_ApiRequestor::request('get', $url); 196 197 return $response; 198 } 199 200 protected static function _scopedGetSurveyAnswers($class, $params){ 201 $url = self::_instanceUrlByParams('getSurveyAnswers', $params); 202 $response = TalentLMS_ApiRequestor::request('get', $url); 203 204 return $response; 205 } 206 207 protected static function _scopedGetIltSessions($class, $params){ 208 $url = self::_instanceUrlByParams('getIltSessions', $params); 209 $response = TalentLMS_ApiRequestor::request('get', $url); 210 211 return $response; 212 } 213 214 protected static function _scopedCreateCourse($class, $params){ 215 self::_validateCall('create', $class, $params); 216 $url = self::_postUrl('createCourse'); 217 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 218 219 return $response; 220 } 221 222 protected static function _scopedCreateGroup($class, $params){ 223 self::_validateCall('create', $class, $params); 224 $url = self::_postUrl('createGroup'); 225 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 226 227 return $response; 228 } 229 230 protected static function _scopedCreateBranch($class, $params){ 231 self::_validateCall('create', $class, $params); 232 $url = self::_postUrl('createBranch'); 233 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 234 235 return $response; 236 } 237 238 protected static function _scopedEditUser($class, $params){ 239 self::_validateCall('editUser', $class, $params); 240 $url = self::_postUrl('editUser'); 241 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 242 243 return $response; 244 } 245 246 protected static function _scopedGetUsersByCustomField($class, $params){ 247 $url = self::_instanceUrlByParams('getUsersByCustomField', $params); 248 $response = TalentLMS_ApiRequestor::request('get', $url); 249 250 return $response; 251 } 252 253 protected static function _scopedGetUserStatusInCourse($class, $params){ 254 $url = self::_instanceUrlByParams('getUserStatusInCourse', $params); 255 $response = TalentLMS_ApiRequestor::request('get', $url); 256 257 return $response; 258 } 259 260 protected static function _scopedGetCustomCourseFields($class){ 261 $url = self::_classUrlByMethodName('customCourseFields'); 262 $response = TalentLMS_ApiRequestor::request('get', $url); 263 264 return $response; 265 } 266 267 protected static function _scopedGetCoursesByCustomField($class, $params){ 268 $url = self::_instanceUrlByParams('getCoursesByCustomField', $params); 269 $response = TalentLMS_ApiRequestor::request('get', $url); 270 271 return $response; 272 } 273 274 protected static function _scopedGetTimeline($class, $params){ 275 $url = self::_instanceUrlByParams('getTimeline', $params); 276 $response = TalentLMS_ApiRequestor::request('get', $url); 277 278 return $response; 279 } 280 281 protected static function _scopedDeleteGroup($class, $params){ 282 self::_validateCall('delete', $class, $params); 283 $url = self::_postUrl('deleteGroup'); 284 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 285 286 return $response; 287 } 288 289 protected static function _scopedDeleteBranch($class, $params){ 290 self::_validateCall('delete', $class, $params); 291 $url = self::_postUrl('deleteBranch'); 292 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 293 294 return $response; 295 } 296 297 protected static function _scopedDeleteCourse($class, $params){ 298 self::_validateCall('delete', $class, $params); 299 $url = self::_postUrl('deleteCourse'); 300 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 301 302 return $response; 303 } 304 305 protected static function _scopedDeleteUser($class, $params){ 306 self::_validateCall('delete', $class, $params); 307 $url = self::_postUrl('deleteUser'); 308 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 309 310 return $response; 311 } 312 313 protected static function _instanceUrl($class, $id){ 314 $base = self::_classUrl($class); 315 $url = $base."/id:".$id; 316 317 return $url; 318 } 319 320 protected static function _classUrl($class){ 321 $class = str_replace('TalentLMS_', '', $class); 322 $class = strtolower($class); 323 324 if($class == 'user'){ 325 return "/users"; 326 } 327 else if($class == 'course'){ 328 return "/courses"; 329 } 330 else if($class == 'category'){ 331 return "/categories"; 332 } 333 else if($class == 'branch'){ 334 return "/branches"; 335 } 336 else if($class == 'group'){ 337 return "/groups"; 338 } 339 else if($class == 'siteinfo'){ 340 return "/siteinfo"; 341 } 342 } 343 344 protected static function _instanceUrlByMethodName($method, $id){ 345 $base = self::_classUrlByMethodName($method); 346 $url = $base."/id:".$id; 347 348 return $url; 349 } 350 351 protected static function _instanceUrlByParams($method, $params){ 352 $base = self::_classUrlByMethodName($method); 353 $url = $base."/"; 354 355 foreach($params as $key => $value){ 356 if($key == 'logout_redirect' || $key == 'course_completed_redirect' || $key == 'redirect_url' || $key == 'domain_url'){ 357 $url .= $key.':'.base64_encode($value).','; 358 } 359 else{ 360 $url .= $key.':'.$value.','; 361 } 362 } 363 364 $url = trim($url, ','); 365 366 return $url; 367 } 368 369 protected static function _classUrlByMethodName($method){ 370 if($method == 'leafsAndCourses'){ 371 return "/categoryleafsandcourses"; 372 } 373 else if($method == 'customRegistrationFields'){ 374 return "/getcustomregistrationfields"; 375 } 376 else if($method == 'userSetStatus'){ 377 return "/usersetstatus"; 378 } 379 else if($method == 'branchSetStatus'){ 380 return "/branchsetstatus"; 381 } 382 else if($method == 'gotoCourse'){ 383 return "/gotocourse"; 384 } 385 else if($method == 'addUserToGroup'){ 386 return "/addusertogroup"; 387 } 388 else if($method == 'removeUserFromGroup'){ 389 return "/removeuserfromgroup"; 390 } 391 else if($method == 'addCourseToGroup'){ 392 return "/addcoursetogroup"; 393 } 394 else if($method == 'addUserToBranch'){ 395 return "/addusertobranch"; 396 } 397 else if($method == 'removeUserFromBranch'){ 398 return "/removeuserfrombranch"; 399 } 400 else if($method == 'addCourseToBranch'){ 401 return "/addcoursetobranch"; 402 } 403 else if($method == 'forgotUsername'){ 404 return "/forgotusername"; 405 } 406 else if($method == 'forgotPassword'){ 407 return "/forgotpassword"; 408 } 409 else if($method == 'users'){ 410 return "/users"; 411 } 412 else if($method == 'getRateLimit'){ 413 return "/ratelimit"; 414 } 415 else if($method == 'getUsersProgressInUnits'){ 416 return "/getusersprogressinunits"; 417 } 418 else if($method == 'getTestAnswers'){ 419 return "/gettestanswers"; 420 } 421 else if($method == 'getSurveyAnswers'){ 422 return "/getsurveyanswers"; 423 } 424 else if($method == 'getIltSessions'){ 425 return "/getiltsessions"; 426 } 427 else if($method == 'getUserStatusInCourse'){ 428 return "/getuserstatusincourse"; 429 } 430 else if($method == 'customCourseFields'){ 431 return "/getcustomcoursefields"; 432 } 433 else if($method == 'getCoursesByCustomField'){ 434 return "/getcoursesbycustomfield"; 435 } 436 else if($method == 'getTimeline'){ 437 return "/gettimeline"; 438 } 439 else if($method == 'removeUserFromCourse'){ 440 return "/removeuserfromcourse"; 441 } 442 else if($method == 'resetUserProgress'){ 443 return "/resetuserprogress"; 444 } 445 else if($method == 'getUsersByCustomField'){ 446 return "/getusersbycustomfield"; 447 } 448 } 449 450 protected static function _postUrl($method){ 451 if($method == 'login'){ 452 return "/userlogin"; 453 } 454 else if($method == 'logout'){ 455 return "/userlogout"; 456 } 457 else if($method == 'addUser'){ 458 return "/addusertocourse"; 459 } 460 else if($method == 'signup'){ 461 return "/usersignup"; 462 } 463 else if($method == 'buyCourse'){ 464 return "/buycourse"; 465 } 466 else if($method == 'buyCategoryCourses'){ 467 return "/buycategorycourses"; 468 } 469 else if($method == 'createCourse'){ 470 return "/createcourse"; 471 } 472 else if($method == 'createGroup'){ 473 return "/creategroup"; 474 } 475 else if($method == 'createBranch'){ 476 return "/createbranch"; 477 } 478 else if($method == 'editUser'){ 479 return "/edituser"; 480 } 481 else if($method == 'deleteGroup'){ 482 return "/deletegroup"; 483 } 484 else if($method == 'deleteBranch'){ 485 return "/deletebranch"; 486 } 487 else if($method == 'deleteCourse'){ 488 return "/deletecourse"; 489 } 490 else if($method == 'deleteUser'){ 491 return "/deleteuser"; 492 } 493 } 494 495 private static function _validateCall($method, $class, $params=null){ 496 if($params && !is_array($params)){ 497 throw new TalentLMS_ApiError("You must pass an array as the first argument to ".$class.'::'.$method."() method calls."); 498 } 499 } 3 abstract class TalentLMS_ApiResource 4 { 5 6 protected static function _scopedRetrieve($class, $id) 7 { 8 $url = self::_instanceUrl($class, $id); 9 $response = TalentLMS_ApiRequestor::request('get', $url); 10 11 return $response; 12 } 13 14 protected static function _scopedAll($class) 15 { 16 $url = self::_classUrl($class); 17 $response = TalentLMS_ApiRequestor::request('get', $url); 18 19 return $response; 20 } 21 22 protected static function _scopedLogin($class, $params) 23 { 24 self::_validateCall('login', $class, $params); 25 $url = self::_postUrl('login'); 26 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 27 28 return $response; 29 } 30 31 protected static function _scopedLogout($class, $params) 32 { 33 self::_validateCall('logout', $class, $params); 34 $url = self::_postUrl('logout'); 35 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 36 37 return $response; 38 } 39 40 protected static function _scopedSignup($class, $params) 41 { 42 self::_validateCall('signup', $class, $params); 43 $url = self::_postUrl('signup'); 44 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 45 46 return $response; 47 } 48 49 protected static function _scopedAddUserToCourse($class, $params) 50 { 51 self::_validateCall('addUser', $class, $params); 52 $url = self::_postUrl('addUser'); 53 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 54 55 return $response; 56 } 57 58 protected static function _scopedRemoveUserFromCourse($class, $params) 59 { 60 $url = self::_instanceUrlByParams('removeUserFromCourse', $params); 61 $response = TalentLMS_ApiRequestor::request('get', $url); 62 63 return $response; 64 } 65 66 protected static function _scopedResetUserProgress($class, $params) 67 { 68 $url = self::_instanceUrlByParams('resetUserProgress', $params); 69 $response = TalentLMS_ApiRequestor::request('get', $url); 70 71 return $response; 72 } 73 74 protected static function _scopedGotoCourse($class, $params) 75 { 76 $url = self::_instanceUrlByParams('gotoCourse', $params); 77 $response = TalentLMS_ApiRequestor::request('get', $url); 78 79 return $response; 80 } 81 82 protected static function _scopedBuyCourse($class, $params) 83 { 84 self::_validateCall('buyCourse', $class, $params); 85 $url = self::_postUrl('buyCourse'); 86 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 87 88 return $response; 89 } 90 91 protected static function _scopedBuyCategoryCourses($class, $params) 92 { 93 self::_validateCall('buyCategoryCourses', $class, $params); 94 $url = self::_postUrl('buyCategoryCourses'); 95 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 96 97 return $response; 98 } 99 100 protected static function _scopedRetrieveLeafsAndCourses($class, $id) 101 { 102 $url = self::_instanceUrlByMethodName('leafsAndCourses', $id); 103 $response = TalentLMS_ApiRequestor::request('get', $url); 104 105 return $response; 106 } 107 108 protected static function _scopedGetCustomRegistrationFields($class) 109 { 110 $url = self::_classUrlByMethodName('customRegistrationFields'); 111 $response = TalentLMS_ApiRequestor::request('get', $url); 112 113 return $response; 114 } 115 116 protected static function _scopedSetUserStatus($class, $params) 117 { 118 $url = self::_instanceUrlByParams('userSetStatus', $params); 119 $response = TalentLMS_ApiRequestor::request('get', $url); 120 121 return $response; 122 } 123 124 protected static function _scopedSetBranchStatus($class, $params) 125 { 126 $url = self::_instanceUrlByParams('branchSetStatus', $params); 127 $response = TalentLMS_ApiRequestor::request('get', $url); 128 129 return $response; 130 } 131 132 protected static function _scopedAddUserToGroup($class, $params) 133 { 134 $url = self::_instanceUrlByParams('addUserToGroup', $params); 135 $response = TalentLMS_ApiRequestor::request('get', $url); 136 137 return $response; 138 } 139 140 protected static function _scopedRemoveUserFromGroup($class, $params) 141 { 142 $url = self::_instanceUrlByParams('removeUserFromGroup', $params); 143 $response = TalentLMS_ApiRequestor::request('get', $url); 144 145 return $response; 146 } 147 148 protected static function _scopedAddCourseToGroup($class, $params) 149 { 150 $url = self::_instanceUrlByParams('addCourseToGroup', $params); 151 $response = TalentLMS_ApiRequestor::request('get', $url); 152 153 return $response; 154 } 155 156 protected static function _scopedAddUserToBranch($class, $params) 157 { 158 $url = self::_instanceUrlByParams('addUserToBranch', $params); 159 $response = TalentLMS_ApiRequestor::request('get', $url); 160 161 return $response; 162 } 163 164 protected static function _scopedRemoveUserFromBranch($class, $params) 165 { 166 $url = self::_instanceUrlByParams('removeUserFromBranch', $params); 167 $response = TalentLMS_ApiRequestor::request('get', $url); 168 169 return $response; 170 } 171 172 protected static function _scopedAddCourseToBranch($class, $params) 173 { 174 $url = self::_instanceUrlByParams('addCourseToBranch', $params); 175 $response = TalentLMS_ApiRequestor::request('get', $url); 176 177 return $response; 178 } 179 180 protected static function _scopedForgotUsername($class, $params) 181 { 182 $url = self::_instanceUrlByParams('forgotUsername', $params); 183 $response = TalentLMS_ApiRequestor::request('get', $url); 184 185 return $response; 186 } 187 188 protected static function _scopedForgotPassword($class, $params) 189 { 190 $url = self::_instanceUrlByParams('forgotPassword', $params); 191 $response = TalentLMS_ApiRequestor::request('get', $url); 192 193 return $response; 194 } 195 196 protected static function _scopedExtendedUserRetrieve($class, $params) 197 { 198 $url = self::_instanceUrlByParams('users', $params); 199 $response = TalentLMS_ApiRequestor::request('get', $url); 200 201 return $response; 202 } 203 204 protected static function _scopedGetRateLimit($class) 205 { 206 $url = self::_instanceUrlByParams('getRateLimit', array()); 207 $response = TalentLMS_ApiRequestor::request('get', $url); 208 209 return $response; 210 } 211 212 protected static function _scopedGetUsersProgressInUnits($class, $params) 213 { 214 $url = self::_instanceUrlByParams('getUsersProgressInUnits', $params); 215 $response = TalentLMS_ApiRequestor::request('get', $url); 216 217 return $response; 218 } 219 220 protected static function _scopedGetTestAnswers($class, $params) 221 { 222 $url = self::_instanceUrlByParams('getTestAnswers', $params); 223 $response = TalentLMS_ApiRequestor::request('get', $url); 224 225 return $response; 226 } 227 228 protected static function _scopedGetSurveyAnswers($class, $params) 229 { 230 $url = self::_instanceUrlByParams('getSurveyAnswers', $params); 231 $response = TalentLMS_ApiRequestor::request('get', $url); 232 233 return $response; 234 } 235 236 protected static function _scopedGetIltSessions($class, $params) 237 { 238 $url = self::_instanceUrlByParams('getIltSessions', $params); 239 $response = TalentLMS_ApiRequestor::request('get', $url); 240 241 return $response; 242 } 243 244 protected static function _scopedCreateCourse($class, $params) 245 { 246 self::_validateCall('create', $class, $params); 247 $url = self::_postUrl('createCourse'); 248 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 249 250 return $response; 251 } 252 253 protected static function _scopedCreateGroup($class, $params) 254 { 255 self::_validateCall('create', $class, $params); 256 $url = self::_postUrl('createGroup'); 257 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 258 259 return $response; 260 } 261 262 protected static function _scopedCreateBranch($class, $params) 263 { 264 self::_validateCall('create', $class, $params); 265 $url = self::_postUrl('createBranch'); 266 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 267 268 return $response; 269 } 270 271 protected static function _scopedEditUser($class, $params) 272 { 273 self::_validateCall('editUser', $class, $params); 274 $url = self::_postUrl('editUser'); 275 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 276 277 return $response; 278 } 279 280 protected static function _scopedGetUsersByCustomField($class, $params) 281 { 282 $url = self::_instanceUrlByParams('getUsersByCustomField', $params); 283 $response = TalentLMS_ApiRequestor::request('get', $url); 284 285 return $response; 286 } 287 288 protected static function _scopedGetUserStatusInCourse($class, $params) 289 { 290 $url = self::_instanceUrlByParams('getUserStatusInCourse', $params); 291 $response = TalentLMS_ApiRequestor::request('get', $url); 292 293 return $response; 294 } 295 296 protected static function _scopedGetCustomCourseFields($class) 297 { 298 $url = self::_classUrlByMethodName('customCourseFields'); 299 $response = TalentLMS_ApiRequestor::request('get', $url); 300 301 return $response; 302 } 303 304 protected static function _scopedGetCoursesByCustomField($class, $params) 305 { 306 $url = self::_instanceUrlByParams('getCoursesByCustomField', $params); 307 $response = TalentLMS_ApiRequestor::request('get', $url); 308 309 return $response; 310 } 311 312 protected static function _scopedGetTimeline($class, $params) 313 { 314 $url = self::_instanceUrlByParams('getTimeline', $params); 315 $response = TalentLMS_ApiRequestor::request('get', $url); 316 317 return $response; 318 } 319 320 protected static function _scopedDeleteGroup($class, $params) 321 { 322 self::_validateCall('delete', $class, $params); 323 $url = self::_postUrl('deleteGroup'); 324 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 325 326 return $response; 327 } 328 329 protected static function _scopedDeleteBranch($class, $params) 330 { 331 self::_validateCall('delete', $class, $params); 332 $url = self::_postUrl('deleteBranch'); 333 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 334 335 return $response; 336 } 337 338 protected static function _scopedDeleteCourse($class, $params) 339 { 340 self::_validateCall('delete', $class, $params); 341 $url = self::_postUrl('deleteCourse'); 342 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 343 344 return $response; 345 } 346 347 protected static function _scopedDeleteUser($class, $params) 348 { 349 self::_validateCall('delete', $class, $params); 350 $url = self::_postUrl('deleteUser'); 351 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 352 353 return $response; 354 } 355 356 protected static function _instanceUrl($class, $id) 357 { 358 $base = self::_classUrl($class); 359 $url = $base."/id:".$id; 360 361 return $url; 362 } 363 364 protected static function _classUrl($class) 365 { 366 $class = str_replace('TalentLMS_', '', $class); 367 $class = strtolower($class); 368 369 if ($class == 'user') { 370 return "/users"; 371 } elseif ($class == 'course') { 372 return "/courses"; 373 } elseif ($class == 'category') { 374 return "/categories"; 375 } elseif ($class == 'branch') { 376 return "/branches"; 377 } elseif ($class == 'group') { 378 return "/groups"; 379 } elseif ($class == 'siteinfo') { 380 return "/siteinfo"; 381 } 382 } 383 384 protected static function _instanceUrlByMethodName($method, $id) 385 { 386 $base = self::_classUrlByMethodName($method); 387 $url = $base."/id:".$id; 388 389 return $url; 390 } 391 392 protected static function _instanceUrlByParams($method, $params) 393 { 394 $base = self::_classUrlByMethodName($method); 395 $url = $base."/"; 396 397 foreach ($params as $key => $value) { 398 if ($key == 'logout_redirect' || $key == 'course_completed_redirect' || $key == 'redirect_url' || $key == 'domain_url') { 399 $url .= $key.':'.base64_encode($value).','; 400 } else { 401 $url .= $key.':'.$value.','; 402 } 403 } 404 405 $url = trim($url, ','); 406 407 return $url; 408 } 409 410 protected static function _classUrlByMethodName($method) 411 { 412 if ($method == 'leafsAndCourses') { 413 return "/categoryleafsandcourses"; 414 } elseif ($method == 'customRegistrationFields') { 415 return "/getcustomregistrationfields"; 416 } elseif ($method == 'userSetStatus') { 417 return "/usersetstatus"; 418 } elseif ($method == 'branchSetStatus') { 419 return "/branchsetstatus"; 420 } elseif ($method == 'gotoCourse') { 421 return "/gotocourse"; 422 } elseif ($method == 'addUserToGroup') { 423 return "/addusertogroup"; 424 } elseif ($method == 'removeUserFromGroup') { 425 return "/removeuserfromgroup"; 426 } elseif ($method == 'addCourseToGroup') { 427 return "/addcoursetogroup"; 428 } elseif ($method == 'addUserToBranch') { 429 return "/addusertobranch"; 430 } elseif ($method == 'removeUserFromBranch') { 431 return "/removeuserfrombranch"; 432 } elseif ($method == 'addCourseToBranch') { 433 return "/addcoursetobranch"; 434 } elseif ($method == 'forgotUsername') { 435 return "/forgotusername"; 436 } elseif ($method == 'forgotPassword') { 437 return "/forgotpassword"; 438 } elseif ($method == 'users') { 439 return "/users"; 440 } elseif ($method == 'getRateLimit') { 441 return "/ratelimit"; 442 } elseif ($method == 'getUsersProgressInUnits') { 443 return "/getusersprogressinunits"; 444 } elseif ($method == 'getTestAnswers') { 445 return "/gettestanswers"; 446 } elseif ($method == 'getSurveyAnswers') { 447 return "/getsurveyanswers"; 448 } elseif ($method == 'getIltSessions') { 449 return "/getiltsessions"; 450 } elseif ($method == 'getUserStatusInCourse') { 451 return "/getuserstatusincourse"; 452 } elseif ($method == 'customCourseFields') { 453 return "/getcustomcoursefields"; 454 } elseif ($method == 'getCoursesByCustomField') { 455 return "/getcoursesbycustomfield"; 456 } elseif ($method == 'getTimeline') { 457 return "/gettimeline"; 458 } elseif ($method == 'removeUserFromCourse') { 459 return "/removeuserfromcourse"; 460 } elseif ($method == 'resetUserProgress') { 461 return "/resetuserprogress"; 462 } elseif ($method == 'getUsersByCustomField') { 463 return "/getusersbycustomfield"; 464 } 465 } 466 467 protected static function _postUrl($method) 468 { 469 if ($method == 'login') { 470 return "/userlogin"; 471 } elseif ($method == 'logout') { 472 return "/userlogout"; 473 } elseif ($method == 'addUser') { 474 return "/addusertocourse"; 475 } elseif ($method == 'signup') { 476 return "/usersignup"; 477 } elseif ($method == 'buyCourse') { 478 return "/buycourse"; 479 } elseif ($method == 'buyCategoryCourses') { 480 return "/buycategorycourses"; 481 } elseif ($method == 'createCourse') { 482 return "/createcourse"; 483 } elseif ($method == 'createGroup') { 484 return "/creategroup"; 485 } elseif ($method == 'createBranch') { 486 return "/createbranch"; 487 } elseif ($method == 'editUser') { 488 return "/edituser"; 489 } elseif ($method == 'deleteGroup') { 490 return "/deletegroup"; 491 } elseif ($method == 'deleteBranch') { 492 return "/deletebranch"; 493 } elseif ($method == 'deleteCourse') { 494 return "/deletecourse"; 495 } elseif ($method == 'deleteUser') { 496 return "/deleteuser"; 497 } 498 } 499 500 private static function _validateCall($method, $class, $params = null) 501 { 502 if ($params && !is_array($params)) { 503 throw new TalentLMS_ApiError("You must pass an array as the first argument to ".$class.'::'.$method."() method calls."); 504 } 505 } 500 506 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Branch.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_Branch extends TalentLMS_ApiResource{ 4 5 public static function create($params){ 6 $class = get_class(); 7 return self::_scopedCreateBranch($class, $params); 8 } 9 10 public static function retrieve($id){ 11 $class = get_class(); 12 return self::_scopedRetrieve($class, $id); 13 } 14 15 public static function all(){ 16 $class = get_class(); 17 return self::_scopedAll($class); 18 } 3 class TalentLMS_Branch extends TalentLMS_ApiResource 4 { 5 6 public static function create($params) 7 { 8 $class = get_class(); 9 return self::_scopedCreateBranch($class, $params); 10 } 11 12 public static function retrieve($id) 13 { 14 $class = get_class(); 15 return self::_scopedRetrieve($class, $id); 16 } 17 18 public static function all() 19 { 20 $class = get_class(); 21 return self::_scopedAll($class); 22 } 19 23 20 public static function delete($params){ 21 $class = get_class(); 22 return self::_scopedDeleteBranch($class, $params); 23 } 24 public static function delete($params) 25 { 26 $class = get_class(); 27 return self::_scopedDeleteBranch($class, $params); 28 } 24 29 25 public static function addUser($params){ 26 $class = get_class(); 27 return self::_scopedAddUserToBranch($class, $params); 28 } 30 public static function addUser($params) 31 { 32 $class = get_class(); 33 return self::_scopedAddUserToBranch($class, $params); 34 } 29 35 30 public static function removeUser($params){ 31 $class = get_class(); 32 return self::_scopedRemoveUserFromBranch($class, $params); 33 } 36 public static function removeUser($params) 37 { 38 $class = get_class(); 39 return self::_scopedRemoveUserFromBranch($class, $params); 40 } 34 41 35 public static function addCourse($params){ 36 $class = get_class(); 37 return self::_scopedAddCourseToBranch($class, $params); 38 } 42 public static function addCourse($params) 43 { 44 $class = get_class(); 45 return self::_scopedAddCourseToBranch($class, $params); 46 } 39 47 40 public static function setStatus($params){ 41 $class = get_class(); 42 return self::_scopedSetBranchStatus($class, $params); 43 } 48 public static function setStatus($params) 49 { 50 $class = get_class(); 51 return self::_scopedSetBranchStatus($class, $params); 52 } 44 53 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Category.php
r1682753 r2873721 1 1 <?php 2 2 3 class TalentLMS_Category extends TalentLMS_ApiResource{ 4 5 public static function retrieve($id){ 6 $class = get_class(); 7 return self::_scopedRetrieve($class, $id); 8 } 9 10 public static function all(){ 11 $class = get_class(); 12 return self::_scopedAll($class); 13 } 14 15 public static function retrieveLeafsAndCourses($id){ 16 $class = get_class(); 17 return self::_scopedRetrieveLeafsAndCourses($class, $id); 18 } 19 20 public static function buyCategoryCourses($params){ 21 $class = get_class(); 22 return self::_scopedBuyCategoryCourses($class, $params); 23 } 3 class TalentLMS_Category extends TalentLMS_ApiResource 4 { 5 6 public static function retrieve($id) 7 { 8 $class = get_class(); 9 return self::_scopedRetrieve($class, $id); 10 } 11 12 public static function all() 13 { 14 $class = get_class(); 15 return self::_scopedAll($class); 16 } 17 18 public static function retrieveLeafsAndCourses($id) 19 { 20 $class = get_class(); 21 return self::_scopedRetrieveLeafsAndCourses($class, $id); 22 } 23 24 public static function buyCategoryCourses($params) 25 { 26 $class = get_class(); 27 return self::_scopedBuyCategoryCourses($class, $params); 28 } 24 29 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Course.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_Course extends TalentLMS_ApiResource{ 4 5 public static function create($params){ 6 $class = get_class(); 7 return self::_scopedCreateCourse($class, $params); 8 } 9 10 public static function retrieve($id){ 11 $class = get_class(); 12 return self::_scopedRetrieve($class, $id); 13 } 14 15 public static function all(){ 16 $class = get_class(); 17 return self::_scopedAll($class); 18 } 3 class TalentLMS_Course extends TalentLMS_ApiResource 4 { 5 6 public static function create($params) 7 { 8 $class = get_class(); 9 return self::_scopedCreateCourse($class, $params); 10 } 11 12 public static function retrieve($id) 13 { 14 $class = get_class(); 15 return self::_scopedRetrieve($class, $id); 16 } 17 18 public static function all() 19 { 20 $class = get_class(); 21 return self::_scopedAll($class); 22 } 19 23 20 public static function delete($params){ 21 $class = get_class(); 22 return self::_scopedDeleteCourse($class, $params); 23 } 24 public static function delete($params) 25 { 26 $class = get_class(); 27 return self::_scopedDeleteCourse($class, $params); 28 } 24 29 25 public static function addUser($params){ 26 $class = get_class(); 27 return self::_scopedAddUserToCourse($class, $params); 28 } 29 30 public static function removeUser($params){ 31 $class = get_class(); 32 return self::_scopedRemoveUserFromCourse($class, $params); 33 } 34 35 public static function gotoCourse($params){ 36 $class = get_class(); 37 return self::_scopedGotoCourse($class, $params); 38 } 39 40 public static function buyCourse($params){ 41 $class = get_class(); 42 return self::_scopedBuyCourse($class, $params); 43 } 44 45 public static function getUserStatus($params){ 46 $class = get_class(); 47 return self::_scopedGetUserStatusInCourse($class, $params); 48 } 30 public static function addUser($params) 31 { 32 $class = get_class(); 33 return self::_scopedAddUserToCourse($class, $params); 34 } 35 36 public static function removeUser($params) 37 { 38 $class = get_class(); 39 return self::_scopedRemoveUserFromCourse($class, $params); 40 } 41 42 public static function gotoCourse($params) 43 { 44 $class = get_class(); 45 return self::_scopedGotoCourse($class, $params); 46 } 47 48 public static function buyCourse($params) 49 { 50 $class = get_class(); 51 return self::_scopedBuyCourse($class, $params); 52 } 53 54 public static function getUserStatus($params) 55 { 56 $class = get_class(); 57 return self::_scopedGetUserStatusInCourse($class, $params); 58 } 49 59 50 public static function getCustomCourseFields(){ 51 $class = get_class(); 52 return self::_scopedGetCustomCourseFields($class); 53 } 60 public static function getCustomCourseFields() 61 { 62 $class = get_class(); 63 return self::_scopedGetCustomCourseFields($class); 64 } 54 65 55 public static function getByCustomField($params){ 56 $class = get_class(); 57 return self::_scopedGetCoursesByCustomField($class, $params); 58 } 66 public static function getByCustomField($params) 67 { 68 $class = get_class(); 69 return self::_scopedGetCoursesByCustomField($class, $params); 70 } 59 71 60 public static function resetUserProgress($params){ 61 $class = get_class(); 62 return self::_scopedResetUserProgress($class, $params); 63 } 72 public static function resetUserProgress($params) 73 { 74 $class = get_class(); 75 return self::_scopedResetUserProgress($class, $params); 76 } 64 77 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Group.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_Group extends TalentLMS_ApiResource{ 4 5 public static function create($params){ 6 $class = get_class(); 7 return self::_scopedCreateGroup($class, $params); 8 } 9 10 public static function retrieve($id){ 11 $class = get_class(); 12 return self::_scopedRetrieve($class, $id); 13 } 14 15 public static function all(){ 16 $class = get_class(); 17 return self::_scopedAll($class); 18 } 3 class TalentLMS_Group extends TalentLMS_ApiResource 4 { 5 6 public static function create($params) 7 { 8 $class = get_class(); 9 return self::_scopedCreateGroup($class, $params); 10 } 11 12 public static function retrieve($id) 13 { 14 $class = get_class(); 15 return self::_scopedRetrieve($class, $id); 16 } 17 18 public static function all() 19 { 20 $class = get_class(); 21 return self::_scopedAll($class); 22 } 19 23 20 public static function delete($params){ 21 $class = get_class(); 22 return self::_scopedDeleteGroup($class, $params); 23 } 24 public static function delete($params) 25 { 26 $class = get_class(); 27 return self::_scopedDeleteGroup($class, $params); 28 } 24 29 25 public static function addUser($params){ 26 $class = get_class(); 27 return self::_scopedAddUserToGroup($class, $params); 28 } 29 30 public static function removeUser($params){ 31 $class = get_class(); 32 return self::_scopedRemoveUserFromGroup($class, $params); 33 } 34 35 public static function addCourse($params){ 36 $class = get_class(); 37 return self::_scopedAddCourseToGroup($class, $params); 38 } 30 public static function addUser($params) 31 { 32 $class = get_class(); 33 return self::_scopedAddUserToGroup($class, $params); 34 } 35 36 public static function removeUser($params) 37 { 38 $class = get_class(); 39 return self::_scopedRemoveUserFromGroup($class, $params); 40 } 41 42 public static function addCourse($params) 43 { 44 $class = get_class(); 45 return self::_scopedAddCourseToGroup($class, $params); 46 } 39 47 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/SiteInfo.php
r1682753 r2873721 1 1 <?php 2 2 3 class TalentLMS_Siteinfo extends TalentLMS_ApiResource{ 4 5 public static function get(){ 6 $class = get_class(); 7 return self::_scopedAll($class); 8 } 9 10 public static function getRateLimit(){ 11 $class = get_class(); 12 return self::_scopedGetRateLimit($class); 13 } 14 15 public static function getTimeline($params){ 16 $class = get_class(); 17 return self::_scopedGetTimeline($class, $params); 18 } 3 class TalentLMS_Siteinfo extends TalentLMS_ApiResource 4 { 5 6 public static function get() 7 { 8 $class = get_class(); 9 return self::_scopedAll($class); 10 } 11 12 public static function getRateLimit() 13 { 14 $class = get_class(); 15 return self::_scopedGetRateLimit($class); 16 } 17 18 public static function getTimeline($params) 19 { 20 $class = get_class(); 21 return self::_scopedGetTimeline($class, $params); 22 } 19 23 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Unit.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_Unit extends TalentLMS_ApiResource{ 4 5 public static function getUsersProgress($params){ 6 $class = get_class(); 7 return self::_scopedGetUsersProgressInUnits($class, $params); 8 } 9 10 public static function getTestAnswers($params){ 11 $class = get_class(); 12 return self::_scopedGetTestAnswers($class, $params); 13 } 14 15 public static function getSurveyAnswers($params){ 16 $class = get_class(); 17 return self::_scopedGetSurveyAnswers($class, $params); 18 } 3 class TalentLMS_Unit extends TalentLMS_ApiResource 4 { 5 6 public static function getUsersProgress($params) 7 { 8 $class = get_class(); 9 return self::_scopedGetUsersProgressInUnits($class, $params); 10 } 11 12 public static function getTestAnswers($params) 13 { 14 $class = get_class(); 15 return self::_scopedGetTestAnswers($class, $params); 16 } 17 18 public static function getSurveyAnswers($params) 19 { 20 $class = get_class(); 21 return self::_scopedGetSurveyAnswers($class, $params); 22 } 19 23 20 public static function getIltSessions($params){ 21 $class = get_class(); 22 return self::_scopedGetIltSessions($class, $params); 23 } 24 public static function getIltSessions($params) 25 { 26 $class = get_class(); 27 return self::_scopedGetIltSessions($class, $params); 28 } 24 29 } -
talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/User.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_User extends TalentLMS_ApiResource{ 4 5 public static function retrieve($params){ 6 $class = get_class(); 7 8 if(!is_array($params)){ // retrieve by id 9 return self::_scopedRetrieve($class, $params); 10 } 11 else{ // e.g. retrieve by email address 12 return self::_scopedExtendedUserRetrieve($class, $params); 13 } 14 } 15 16 public static function all(){ 17 $class = get_class(); 18 return self::_scopedAll($class); 19 } 3 class TalentLMS_User extends TalentLMS_ApiResource 4 { 5 6 public static function retrieve($params) 7 { 8 $class = get_class(); 9 10 if (!is_array($params)) { // retrieve by id 11 return self::_scopedRetrieve($class, $params); 12 } else { // e.g. retrieve by email address 13 return self::_scopedExtendedUserRetrieve($class, $params); 14 } 15 } 16 17 public static function all() 18 { 19 $class = get_class(); 20 return self::_scopedAll($class); 21 } 20 22 21 public static function delete($params){ 22 $class = get_class(); 23 return self::_scopedDeleteUser($class, $params); 24 } 23 public static function delete($params) 24 { 25 $class = get_class(); 26 return self::_scopedDeleteUser($class, $params); 27 } 25 28 26 public static function login($params){ 27 $class = get_class(); 28 return self::_scopedLogin($class, $params); 29 } 30 31 public static function logout($params){ 32 $class = get_class(); 33 return self::_scopedLogout($class, $params); 34 } 35 36 public static function signup($params){ 37 $class = get_class(); 38 return self::_scopedSignup($class, $params); 39 } 40 41 public static function getCustomRegistrationFields(){ 42 $class = get_class(); 43 return self::_scopedGetCustomRegistrationFields($class); 44 } 45 46 public static function setStatus($params){ 47 $class = get_class(); 48 return self::_scopedSetUserStatus($class, $params); 49 } 50 51 public static function forgotUsername($params){ 52 $class = get_class(); 53 return self::_scopedForgotUsername($class, $params); 54 } 55 56 public static function forgotPassword($params){ 57 $class = get_class(); 58 return self::_scopedForgotPassword($class, $params); 59 } 60 61 public static function edit($params){ 62 $class = get_class(); 63 return self::_scopedEditUser($class, $params); 64 } 65 66 public static function getByCustomField($params){ 67 $class = get_class(); 68 return self::_scopedGetUsersByCustomField($class, $params); 69 } 29 public static function login($params) 30 { 31 $class = get_class(); 32 return self::_scopedLogin($class, $params); 33 } 34 35 public static function logout($params) 36 { 37 $class = get_class(); 38 return self::_scopedLogout($class, $params); 39 } 40 41 public static function signup($params) 42 { 43 $class = get_class(); 44 return self::_scopedSignup($class, $params); 45 } 46 47 public static function getCustomRegistrationFields() 48 { 49 $class = get_class(); 50 return self::_scopedGetCustomRegistrationFields($class); 51 } 52 53 public static function setStatus($params) 54 { 55 $class = get_class(); 56 return self::_scopedSetUserStatus($class, $params); 57 } 58 59 public static function forgotUsername($params) 60 { 61 $class = get_class(); 62 return self::_scopedForgotUsername($class, $params); 63 } 64 65 public static function forgotPassword($params) 66 { 67 $class = get_class(); 68 return self::_scopedForgotPassword($class, $params); 69 } 70 71 public static function edit($params) 72 { 73 $class = get_class(); 74 return self::_scopedEditUser($class, $params); 75 } 76 77 public static function getByCustomField($params) 78 { 79 $class = get_class(); 80 return self::_scopedGetUsersByCustomField($class, $params); 81 } 70 82 } -
talentlms/tags/7.0/readme.txt
r2828674 r2873721 5 5 Tested up to: 6.1.1 6 6 Requires PHP: 5.2.4 7 Stable tag: trunk7 Stable tag: 7.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 55 55 56 56 == Changelog == 57 58 = 7.0 = 59 60 * Added support for Wordpress 6.1.1 61 * Refactor plugin's codebase 62 * Use your own custom css rules 63 * No support for Wordpress Site Editor 57 64 58 65 = 6.6.9.5 = -
talentlms/tags/7.0/talentlms.php
r2826498 r2873721 3 3 Plugin Name: TalentLMS 4 4 Plugin URI: http://wordpress.org/extend/plugins/talentlms/ 5 Description: This plugin integrates Talent lms with Wordpress. Promote your TalentLMS content through your WordPress site.6 Version: 6.6.9.55 Description: This plugin integrates TalentLMS with WordPress. Promote your TalentLMS content through your WordPress site. 6 Version: 7.0 7 7 Author: Epignosis LLC 8 8 Author URI: www.epignosishq.com … … 10 10 */ 11 11 12 define("_TLMS_VERSION_", "6.6.9.5"); 13 define("_TLMS_BASEPATH_", dirname(__FILE__)); 14 define("_TLMS_BASEURL_", plugin_dir_url(__FILE__)); 12 /** 13 * Require once the Composer Autoload 14 */ 15 if (file_exists(plugin_dir_path(__FILE__) . 'vendor/autoload.php')) { 16 require_once plugin_dir_path(__FILE__) . 'vendor/autoload.php'; 17 } 15 18 16 require_once (_TLMS_BASEPATH_ . '/TalentLMSLib/lib/TalentLMS.php'); 19 /** 20 * Define constants 21 */ 22 define('TLMS_BASEPATH', dirname(__FILE__)); 23 define('TLMS_BASEURL', plugin_dir_url(__FILE__)); 24 define('TLMS_VERSION', '7.0'); 25 define('TLMS_UPLOAD_DIR', 'talentlmswpplugin'); 26 /** 27 * The code that runs during plugin activation 28 */ 29 function activate(): void 30 { 31 TalentlmsIntegration\Activate::tlms_activate(); 32 } 33 register_activation_hook(__FILE__, 'activate'); 17 34 18 require_once (_TLMS_BASEPATH_ . '/utils/utils.php');19 require_once (_TLMS_BASEPATH_ . '/utils/db.php');20 require_once (_TLMS_BASEPATH_ . '/utils/install.php');21 require_once (_TLMS_BASEPATH_ . '/admin/admin.php');22 require_once (_TLMS_BASEPATH_ . '/shortcodes/reg_shortcodes.php');23 require_once (_TLMS_BASEPATH_ . '/integrations/woocommerce.php');24 require_once (_TLMS_BASEPATH_ . '/widgets/reg_widgets.php');25 26 27 register_activation_hook(__FILE__, 'tlms_install');28 35 register_uninstall_hook(__FILE__, 'tlms_uninstall'); 29 36 30 function tlms_isWoocommerceActive() { 31 if ( is_plugin_active('woocommerce/woocommerce.php') ) { 32 update_option('tlms-woocommerce-active', 1); 33 } else { 34 update_option('tlms-woocommerce-active', 0); 35 } 36 if( empty(get_option('tlms-enroll-user-to-courses')) ){ 37 update_option('tlms-enroll-user-to-courses', 'submission'); 37 if (file_exists(TLMS_BASEPATH . '/TalentLMSLib/lib/TalentLMS.php')) { 38 require_once TLMS_BASEPATH . '/TalentLMSLib/lib/TalentLMS.php'; 39 } 40 41 if (class_exists('TalentlmsIntegration\Plugin')) { 42 TalentlmsIntegration\Plugin::init(); 43 } 44 45 function tlms_isWoocommerceActive() 46 { 47 if (is_plugin_active('woocommerce/woocommerce.php')) { 48 update_option('tlms-woocommerce-active', 1); 49 } else { 50 update_option('tlms-woocommerce-active', 0); 51 } 52 if (empty(get_option('tlms-enroll-user-to-courses'))) { 53 update_option('tlms-enroll-user-to-courses', 'submission'); 38 54 } 39 55 } 40 add_action( 'admin_init', 'tlms_isWoocommerceActive');56 add_action('admin_init', 'tlms_isWoocommerceActive'); -
talentlms/trunk/README.md
r2828674 r2873721 1 === TalentLMS WordPress plugin === 2 Contributors: panagop, papagel75, simosnomikos 3 Tags: TalentLMS, elearning, lms, lcms, hcm, learning management system 4 Requires at least: 2.0 5 Tested up to: 6.1.1 6 Requires PHP: 5.2.4 7 Stable tag: trunk 8 License: GPLv2 or later 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 1 <a name="readme-top"></a> 2 ## TalentLMS WordPress plugin 10 3 11 This plugin integrates Talentlms with Wordpress. Promote your TalentLMS content through your WordPress site. 4 * **Contributors:** panagop, papagel75, simosnomikos 5 * **Tags:** TalentLMS, elearning, lms, lcms, hcm, learning management system 6 * **Requires at least:** 2.0 7 * **Tested up to:** 6.1.1 8 * **Requires PHP:** 5.2.4 9 * **Stable tag:** 7.0 12 10 13 == Description == 11 This plugin integrates TalentLMS with WordPress. Promote your TalentLMS content through your WordPress site. 12 13 <!-- TABLE OF CONTENTS --> 14 <details open> 15 <summary>Table of Contents</summary> 16 <ol> 17 <li> 18 <a href="#about-the-project">About The Project</a> 19 <ul> 20 <li><a href="#plugin-features">Plugin Features</a></li> 21 </ul> 22 </li> 23 <li> 24 <a href="#getting-started">Getting Started</a> 25 <ul> 26 <li><a href="#installation">Installation</a></li> 27 </ul> 28 </li> 29 <li><a href="#usage">Usage</a></li> 30 <li><a href="#license">License</a></li> 31 <li><a href="#faq">FAQ</a></li> 32 </ol> 33 </details> 34 35 ### About The Project 14 36 15 37 [TalentLMS](http://www.talentlms.com/ "TalentLMS super-easy, cloud-based learning platform") is a cloud-based, lean LMS with an emphasis on usability and easy course creation. With TalentLMS we wanted to create a better learning experience in every way that actually matters – and we are excited about this new offering. The product focuses on small but growing organizations. There are a number of obstacles that prohibit small organizations from using elearning. To be productive, small businesses need a number of tools and several related services such as setup and maintenance, course creation and the support of end-users. All these require ample time, resources and money. It comes as no surprise that most small organizations find elearning a non-viable pursuit and prefer on-job or informal training methods. … … 20 42 * [TalentLMS - Get started in 5'](https://www.talentlms.com/blog/talentlms-get-started-in-5/ "TalentLMS - Get started in 5'") 21 43 22 ## Plugin Features ##44 ### Plugin Features 23 45 24 46 * List your TalentLMS courses and their content in WordPress. 25 47 * Integrate your TalentLMS courses as WooCommerce products 26 48 27 == Installation == 49 ## Getting Started 28 50 29 # To Install:#51 ### Installation 30 52 31 53 1. Download TalentLMS WordPress plugin 32 1. Unzip the file into a folder on your hard drive33 1. Upload `/talentlms/` folder to the `/wp-content/plugins/` folder on your site34 1. Visit your WordPress _Administration -> Plugins_ and activate TalentLMS WordPress plugin54 2. Unzip the file into a folder on your hard drive 55 3. Upload `/talentlms/` folder to the `/wp-content/plugins/` folder on your site 56 4. Visit your WordPress _Administration -> Plugins_ and activate TalentLMS WordPress plugin 35 57 36 58 Alternatively you can automatically install TalentLMS WordPress plugin from the WordPress Plugin Directory. 37 59 38 # Usage:#60 ## Usage 39 61 40 62 * Once you have activated the plugin, provide your TalentLMS Domain name and TalentLMS API key. … … 45 67 * Insert TalentLMS widget in any registered sidebar of your site. 46 68 47 == Frequently Asked Questions == 69 ## License 70 71 Distributed under the [GPLv2 or later License](http://www.gnu.org/licenses/gpl-2.0.html). See `LICENSE.txt` for more information. 72 73 ## FAQ 48 74 49 75 If you have a question or any feedback you want to share send us an email at [support@talentlms.com](mailto:support@talentlms.com 'support') 50 76 51 == Screenshots == 52 1. Course catalog `assets/screenshot-1.png` 53 2. Admin dashboard `assets/screenshot-2.png` 54 3. Integration pages `assets/screenshot-3.png` 55 56 == Changelog == 57 58 = 6.6.9.5 = 59 60 * Updated the readme file 61 62 = 6.6.9.4 = 63 64 * Added support for Wordpress 5.8 and PHP 7.4 65 * Fix category's filter in shortcode 66 * Fix a bug when the 12-hour format is used 67 * Improve password generation 68 * Fix checkbox filter on courses page 69 * Use the latest TalentLMS PHP wrapper 70 71 = 6.6.9.3 = 72 73 * Fix that respects db prefix on course re-sync action 74 * Update wording on course navigation button 75 76 = 6.6.9.2 = 77 78 * Fix double firstname whitespace sanitization 79 80 = 6.6.9.1 = 81 82 * Free courses upon order completion fix 83 84 = 6.6.9 = 85 86 * Payment gateway cancellation proccess fix 87 88 = 6.6.8 = 89 90 * Development functions prefixed. 91 92 = 6.6.7 = 93 94 * Metadata fix. 95 96 = 6.6.6 = 97 98 * A user should be able to purchase only one instance of a course. 99 100 = 6.6.5 = 101 102 * Drop plugin tables from the database when a user deletes the plugin 103 104 = 6.6.4 = 105 106 * Upgrade script bugfix 107 108 = 6.6.3 = 109 110 * Assets versioning 111 * Upgrade script 112 113 = 6.6 = 114 115 * Replace all course pictures, to big avatar 116 * Course list, shows only active courses that are visible on catalog. 117 * Improve re-sync functionality. 118 * Improve users enrollment on courses. 119 * Improve thank you page in order details list, go to course page link addition. 120 * TalentLMS widget addition. 121 * Bugfix on woocommerce checkout page, when trying to create a customer account. 122 * Bugfix on plugin activation. 123 124 = 6.5 = 125 126 * Remove deprecated signup page 127 * Improve domain/api key validation 128 129 = 6.4 = 130 131 * Provision for WooCommerce customer reset password 132 * Course format fix 133 * Setting domain/api key issue 134 135 = 6.3 = 136 137 * Woocommerce integration handle non talentlms products 138 * Provision for WooCommerce customer change password 139 * Handle existing not talentlms customers 140 * Error logs 141 142 = 6.2 = 143 144 * Woocommerce integration handle non talentlms products 145 * Handling of deleted products 146 147 148 = 6.1 = 149 150 * Removed deprecated shortcode [talentlms-signup] 151 152 = 6.0 = 153 154 * New improved version 155 * Better TalentLMS WooCommerce integration 156 * Removed obsolete features 157 158 = 5.3.3 = 159 160 * Fixed WooCommerce error handling 161 162 = 5.3.2 = 163 164 * Fixed notices 165 166 = 5.3.1 = 167 168 * Fixed issue when unsetting woocommerce user integration 169 170 = 5.3.0 = 171 172 * Fixed synced content 173 174 = 5.2.9 = 175 176 * Fixed warning in integrations page 177 178 = 5.2.8 = 179 180 * Do not show hidden from catalog courses in [talentlms-courses] shortcode 181 182 = 5.2.7 = 183 184 * Shortcodes correctly appear in content 185 186 = 5.2.6 = 187 188 * Fixed WooCommerce integration user details 189 190 = 5.2.5 = 191 192 * Fixed WooCommerce integration selecting courses 193 194 = 5.2.4 = 195 196 * Fixed error handling 197 198 = 5.2.3 = 199 200 * Registering users bug fix 201 202 = 5.2.2 = 203 204 * Shortcodes correctly appear in content 205 206 = 5.2.1 = 207 208 * Bug fix in forgot credentials form 209 210 = 5.2 = 211 212 * WooCommerce assign user to course (compatibility issue) 213 214 = 5.1 = 215 216 * WooCommerce assign user to course 217 218 = 5.0 = 219 220 * Updated WooCommerce integration options 221 222 = 4.9 = 223 224 * Login integration option 225 226 = 4.8.2 = 227 228 * Bug fixes for WooCommerce integration 229 230 = 4.8 = 231 232 * Various bug fixes 233 234 = 4.7.1 = 235 236 * Login redirection issue 237 238 = 4.7 = 239 240 * Login fixes 241 242 = 4.6.3 = 243 244 * Synced users get fixed password, their login 245 * Login redirects fixes (3) 246 247 = 4.6.2 = 248 249 * Login redirects fixes (2) 250 251 = 4.6.1 = 252 253 * Login redirects fixes 254 255 = 4.6 = 256 257 * Woocommerce integration, orders get autocompleted 258 * Login fixes 259 260 = 4.5.8 = 261 262 * Woocommerce integration, when admin marks order as complete user gets assigned to the course 263 264 = 4.5.7 = 265 266 * Lastest version of TalentLMS lib 267 268 = 4.5.6 = 269 270 * Fixed TalentLMS wp_login wp_logout for widget 271 272 = 4.5.5 = 273 274 * Fixed TalentLMS sync passwords issue 275 * Fixed TalentLMS wp_login wp_logout 276 277 = 4.5.4 = 278 279 * Updated CDNs for jquery boostrap datatables 280 281 = 4.5.3 = 282 283 * Course list does not show inactive courses 284 285 = 4.5.2 = 286 287 * Fixed issue about redirect to after TalentLMS logout 288 289 = 4.5.1 = 290 291 * Fixed issue about redirect to TalentLMS after login 292 293 = 4.5 = 294 295 * Fixed issue about TalentLMS user login (wordpress authentication) 296 * Signup with WooCommerce, also signs up with TalentLMS 297 298 = 4.4.6 = 299 300 * Fixed issue about empty custom fields 301 302 = 4.4.4 = 303 304 * WooCommerce integration login 305 306 = 4.4.4 = 307 308 * WooCommerce integration no active/hidden from catalog courses 309 310 = 4.4.3 = 311 312 * Fixed subscriber permissions issue 313 314 = 4.4.2 = 315 316 * Minor bugfixes 317 318 = 4.4.1 = 319 320 * Minor bugfixes 321 322 = 4.4 = 323 324 * WooCommerce integration 325 * Minor bugfixes 326 327 = 4.3 = 328 329 * When redirected (logged in) to TalentLMS, new option on logout from TaletLMS behavior 330 331 = 4.2.1 = 332 333 * Section unit types 334 335 = 4.2 = 336 337 * New unit types integratd to plugin 338 339 = 4.0 = 340 341 * Various bug fixes 342 * Complete WordPress and TalentLMS signup integration 343 * Complete WordPress and TalentLMS login integration 344 * Redesigned course catalog and admin panel 345 * Subscriber panel in WordPress 346 347 = 3.18.1 = 348 349 * Avoid conflict with some themes 350 351 = 3.18 = 352 353 * Creating a TalentLMS user when a user signs up to WP full registration process 354 355 = 3.17 = 356 357 * Bugfix for option to create TalentLMS user when a user signs up to WP 358 359 = 3.16 = 360 361 * Option to create TalentLMS user when a user signs up to WP 362 * WP subscriber/TalentLMS user, WP/TalentLMS Profile 363 364 = 3.15 = 365 366 * jquery ui update 367 368 = 3.13 = 369 370 * New signup methods supported 371 372 = 3.12 = 373 374 * Edit TalentLMS CSS bug fixed 375 376 = 3.11 = 377 378 * Sync users bugs fixed 379 * Forgot login/pass bugs fixed 380 381 = 3.10 = 382 383 * New version of TalentLMSLib 384 385 = 3.9.1 = 386 387 * Signup issues fixed 388 389 = 3.9 = 390 391 * Forgot login/password checkboxes 392 393 = 3.8 = 394 395 * Forgot login/password bug fix 396 397 = 3.7 = 398 399 * More signup methods supported 400 401 = 3.6 = 402 403 * Bugfix in custom fields 404 405 = 3.5 = 406 407 * Bugfix in custom fields in signup page in case of multiple select custom fields 408 409 = 3.4 = 410 411 * Various typos fixed 412 413 = 3.3 = 414 415 * Fixes issue with conflicts with other WP plugin due to query strings 416 417 = 3.2 = 418 419 * New version of TalentLMS PHP library 420 421 = 3.0 = 422 423 * TalentLMS users shortcode 424 * Sync TalentLMS content with WP 425 426 = 2.2 = 427 428 * Building categories tree recursively. No longer depending to libxml PHP extension 429 430 = 2.1 = 431 432 * Plugin connects to TalentLMS domain map, if exists, instead of talentLMS domain 433 * Units in course, link to TalentLMS units (redirect without second login) 434 435 = 2.0 = 436 437 * CSS additions 438 439 = 1.9.1 = 440 441 * When purchasing a course, does not redirect to PayPal 442 443 = 1.9 = 444 445 * Single course view, unit urls when user is logged in. 446 447 = 1.8 = 448 449 * Users page which lists instructors and instructor details 450 * Customizable template for users page 451 * Upon plugin installation courses, users and signup WordPress page with shortcodes are created. 452 * Error messages of each TalentLMS API call 453 * Clean CSS rules defined for each TalentLMS element 454 * New version of TalentLMS API PHP library 455 456 = 1.7 = 457 458 * Tree like representation of TalentLMS categories 459 460 = 1.6 = 461 462 * Single course template options 463 * Courses list template options 464 465 = 1.5 = 466 467 * Course thumbnails static urls 468 469 = 1.4 = 470 471 * TalentLMS signup supports TalentLMS custom fields 472 473 = 1.3 = 474 475 * Content to WordPress pages is inserted in its relative position to shortcodes. 476 * Show instructors' names in single course page 477 * Certification kai Certification duration removed from course page 478 479 = 1.2 = 480 481 * TalentLMS CSS editor in Wordpress Administration Panel 482 * TalentLMS Option for customizition of TalentLMS Plugins 483 * Courses per page 484 * Templates for course page 485 * Action after signup 486 * Caching of TalentLMS data 487 * Login modal in single course page 488 * Users are prompted to buy TalentLMS course instead of just getting it 489 490 = 1.1 = 491 492 * Users can go to courses in TalentLMS 493 494 = 1.0 (Initial release) = 495 496 * Administration Panel for TalentLMS management 497 * Login to TalentLMS widget for Wordpress 498 * shortcode for signup page to TalentLMS 499 * shortcode for listing courses from TalentLMS 500 501 == Upgrade Notice == 502 503 = 3.17.1 = 504 505 * Help tabs information 506 507 = 3.14 = 508 509 * Signup custom fields bug fix 510 511 = 3.1 = 512 513 * Various minor bugfixes 514 515 = 3.0 = 516 517 * Updated version of TalentLMS library 518 * Various minor/major bugfixes 519 520 = 2.0 = 521 522 * Users can buy categories 523 524 = 1.9.1 = 525 526 * When purchasing a course, does not redirect to PayPal fixed 527 528 = 1.8 = 529 530 Various security issues 531 532 = 1.6 = 533 534 Courses pagination does not include inactive or hidden from catalog courses 535 536 = 1.3 = 537 538 Mishandling of inactive and not-for-catalog courses 539 Bottom pagination bug fix 540 541 = 1.1 = 542 543 Login fixed 544 When logged in user first name/last name appear correctly 545 Course prices appear correctly 77 <p align="right">(<a href="#readme-top">back to top</a>)</p> -
talentlms/trunk/TalentLMSLib/lib/TalentLMS.php
r2750739 r2873721 1 1 <?php 2 2 3 if (!function_exists('curl_init')){4 throw new Exception('TalentLMS API needs the CURL PHP extension.');3 if (!function_exists('curl_init')) { 4 throw new Exception('TalentLMS API needs the CURL PHP extension.'); 5 5 } 6 6 7 if (!function_exists('json_decode')){8 throw new Exception('TalentLMS API needs the JSON PHP extension.');7 if (!function_exists('json_decode')) { 8 throw new Exception('TalentLMS API needs the JSON PHP extension.'); 9 9 } 10 10 11 abstract class TalentLMS{ 12 public static $apiKey; 13 public static $domain; 14 public static $apiBase; 15 public static $apiProtocol; 11 abstract class TalentLMS 12 { 13 public static $apiKey; 14 public static $domain; 15 public static $apiBase; 16 public static $apiProtocol; 16 17 17 const VERSION = '1.0';18 const PREFIX = 'WpPlugin';18 const VERSION = '1.0'; 19 const PREFIX = 'WpPlugin'; 19 20 20 public static function getApiKey(){ 21 return self::$apiKey; 22 } 21 public static function getApiKey() 22 { 23 return self::$apiKey; 24 } 23 25 24 public static function setApiKey($apiKey){ 25 self::$apiKey = $apiKey; 26 } 26 public static function setApiKey($apiKey) 27 { 28 self::$apiKey = $apiKey; 29 } 27 30 28 public static function getDomain(){ 29 return self::$domain; 30 } 31 public static function getDomain() 32 { 33 return self::$domain; 34 } 31 35 32 public static function setProtocol($protocol){ 33 if($protocol == 'http' || $protocol == 'https'){ 34 self::$apiProtocol = $protocol; 35 } 36 } 36 public static function setProtocol($protocol) 37 { 38 if ($protocol == 'http' || $protocol == 'https') { 39 self::$apiProtocol = $protocol; 40 } 41 } 37 42 38 public static function setDomain($domain){ 39 $domain = str_replace('http://', '', $domain); 40 $domain = str_replace('https://', '', $domain); 41 $domain = str_replace('/', '', $domain); 42 43 self::$domain = $domain; 43 public static function setDomain($domain) 44 { 45 $domain = str_replace('http://', '', $domain); 46 $domain = str_replace('https://', '', $domain); 47 $domain = str_replace('/', '', $domain); 48 49 self::$domain = $domain; 44 50 45 if(!isset(self::$apiProtocol) || (self::$apiProtocol != 'http' && self::$apiProtocol != 'https')){46 self::$apiProtocol = 'https';47 }51 if (!isset(self::$apiProtocol) || (self::$apiProtocol != 'http' && self::$apiProtocol != 'https')) { 52 self::$apiProtocol = 'https'; 53 } 48 54 49 self::$apiBase = self::$apiProtocol.'://'.$domain.'/api/v1'; 50 } 51 52 public static function getApiBase(){ 53 return self::$apiBase; 54 } 55 56 public static function setApiBase($apiBase){ 57 self::$apiBase = $apiBase; 58 } 55 self::$apiBase = self::$apiProtocol.'://'.$domain.'/api/v1'; 56 } 57 58 public static function getApiBase() 59 { 60 return self::$apiBase; 61 } 62 63 public static function setApiBase($apiBase) 64 { 65 self::$apiBase = $apiBase; 66 } 59 67 } 60 68 -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/ApiError.php
r1682753 r2873721 1 1 <?php 2 2 3 class TalentLMS_ApiError extends Exception{ 4 5 public function __construct($message=null, $http_status=null, $http_body=null, $json_body=null){ 6 parent::__construct($message); 7 $this->http_status = $http_status; 8 $this->http_body = $http_body; 9 $this->json_body = $json_body; 10 } 3 class TalentLMS_ApiError extends Exception 4 { 5 6 public function __construct($message = null, $http_status = null, $http_body = null, $json_body = null) 7 { 8 parent::__construct($message); 9 $this->http_status = $http_status; 10 $this->http_body = $http_body; 11 $this->json_body = $json_body; 12 } 11 13 12 public function getHttpStatus(){ 13 return $this->http_status; 14 } 14 public function getHttpStatus() 15 { 16 return $this->http_status; 17 } 15 18 16 public function getHttpBody(){ 17 return $this->http_body; 18 } 19 public function getHttpBody() 20 { 21 return $this->http_body; 22 } 19 23 20 public function getJsonBody(){ 21 return $this->json_body; 22 } 24 public function getJsonBody() 25 { 26 return $this->json_body; 27 } 23 28 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/ApiRequestor.php
r1885455 r2873721 1 1 <?php 2 2 3 class TalentLMS_ApiRequestor{ 4 5 public static function request($method, $url, $params=null){ 6 list($rbody, $rcode) = self::_requestRaw($method, $url, $params); 7 $response = self::_interpretResponse($rbody, $rcode); 8 return $response; 9 } 10 11 private static function _interpretResponse($rbody, $rcode){ 12 try{ 13 $response = json_decode($rbody, true); 14 } 15 catch(Exception $e){ 16 throw new TalentLMS_ApiError("Invalid response body from API: ".$rbody." (HTTP response code was ".$rcode.")", $rcode, $rbody); 17 } 18 19 if($rcode < 200 || $rcode >= 300){ 20 self::_handleApiError($rbody, $rcode, $response); 21 } 22 23 return $response; 24 } 25 26 private static function _requestRaw($method, $url, $params){ 27 $myApiKey = TalentLMS::$apiKey; 28 $myApiBase = TalentLMS::$apiBase; 3 class TalentLMS_ApiRequestor 4 { 5 6 public static function request($method, $url, $params = null) 7 { 8 list($rbody, $rcode) = self::_requestRaw($method, $url, $params); 9 $response = self::_interpretResponse($rbody, $rcode); 10 return $response; 11 } 12 13 private static function _interpretResponse($rbody, $rcode) 14 { 15 try { 16 $response = json_decode($rbody, true); 17 } catch (Exception $e) { 18 throw new TalentLMS_ApiError("Invalid response body from API: ".$rbody." (HTTP response code was ".$rcode.")", $rcode, $rbody); 19 } 20 21 if ($rcode < 200 || $rcode >= 300) { 22 self::_handleApiError($rbody, $rcode, $response); 23 } 24 25 return $response; 26 } 27 28 private static function _requestRaw($method, $url, $params) 29 { 30 $myApiKey = TalentLMS::$apiKey; 31 $myApiBase = TalentLMS::$apiBase; 29 32 30 if(!$myApiKey){31 throw new TalentLMS_ApiError('No API key provided. (HINT: set your API key using "TalentLMS::setApiKey(\'API-KEY\')").');32 }33 34 if(!$myApiBase){35 throw new TalentLMS_ApiError('No domain provided. (HINT: set your domain using "TalentLMS::setDomain(\'DOMAIN\')").');36 }37 38 $absUrl = self::_apiUrl($url);33 if (!$myApiKey) { 34 throw new TalentLMS_ApiError('No API key provided. (HINT: set your API key using "TalentLMS::setApiKey(\'API-KEY\')").'); 35 } 36 37 if (!$myApiBase) { 38 throw new TalentLMS_ApiError('No domain provided. (HINT: set your domain using "TalentLMS::setDomain(\'DOMAIN\')").'); 39 } 40 41 $absUrl = self::_apiUrl($url); 39 42 40 $ua = array('bindings_version' => TalentLMS::VERSION,41 'lang' => 'php',42 'lang_version' => phpversion(),43 'publisher' => 'talentlms',44 'uname' => php_uname());45 46 $headers = array('X-Talentlms-Client-User-Agent: '.json_encode($ua),47 'User-Agent: '.TalentLMS::PREFIX.' Talentlms/v1 PhpBindings/'.TalentLMS::VERSION);48 49 list($rbody, $rcode) = self::_curlRequest($method, $absUrl, $headers, $params, $myApiKey);50 return array($rbody, $rcode);51 }52 53 protected static function _apiUrl($url=''){ 54 $apiBase = TalentLMS::$apiBase; 55 return $apiBase.$url;56 } 57 58 private static function _curlRequest($method, $absUrl, $headers, $params, $myApiKey){ 59 $curl = curl_init(); 60 $method = strtolower($method); 61 $opts = array();62 63 if($method == 'get'){ 64 $opts[CURLOPT_HTTPGET] = 1; 65 } 66 else if($method == 'post'){ 67 $opts[CURLOPT_POST] = 1; 68 69 if($params != null){ 70 $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); 71 } 72 }73 else{74 throw new TalentLMS_ApiError("Unsupported method ".$method);75 }76 77 $opts[CURLOPT_URL] = $absUrl;78 $opts[CURLOPT_RETURNTRANSFER] = true;79 $opts[CURLOPT_CONNECTTIMEOUT] = 30;80 $opts[CURLOPT_TIMEOUT] = 80;81 $opts[CURLOPT_RETURNTRANSFER] = true;82 $opts[CURLOPT_HTTPHEADER] = $headers;83 $opts[CURLOPT_USERPWD] = $myApiKey.':';84 $opts[CURLOPT_SSL_VERIFYPEER] = false;85 $opts[CURLOPT_HTTPAUTH] = CURLAUTH_BASIC;86 87 curl_setopt_array($curl, $opts);88 $rbody = curl_exec($curl);89 90 if($rbody === false || $rbody == FALSE){91 $errno = curl_errno($curl);92 $message = curl_error($curl);93 curl_close($curl);94 self::_handleCurlError($errno, $message);95 }96 97 $rcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);98 curl_close($curl);43 $ua = array('bindings_version' => TalentLMS::VERSION, 44 'lang' => 'php', 45 'lang_version' => phpversion(), 46 'publisher' => 'talentlms', 47 'uname' => php_uname()); 48 49 $headers = array('X-Talentlms-Client-User-Agent: '.json_encode($ua), 50 'User-Agent: '.TalentLMS::PREFIX.' Talentlms/v1 PhpBindings/'.TalentLMS::VERSION); 51 52 list($rbody, $rcode) = self::_curlRequest($method, $absUrl, $headers, $params, $myApiKey); 53 return array($rbody, $rcode); 54 } 55 56 protected static function _apiUrl($url = '') 57 { 58 $apiBase = TalentLMS::$apiBase; 59 return $apiBase.$url; 60 } 61 62 private static function _curlRequest($method, $absUrl, $headers, $params, $myApiKey) 63 { 64 $curl = curl_init(); 65 $method = strtolower($method); 66 $opts = array(); 67 68 if ($method == 'get') { 69 $opts[CURLOPT_HTTPGET] = 1; 70 } elseif ($method == 'post') { 71 $opts[CURLOPT_POST] = 1; 72 73 if ($params != null) { 74 $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); 75 } 76 } else { 77 throw new TalentLMS_ApiError("Unsupported method ".$method); 78 } 79 80 $opts[CURLOPT_URL] = $absUrl; 81 $opts[CURLOPT_RETURNTRANSFER] = true; 82 $opts[CURLOPT_CONNECTTIMEOUT] = 30; 83 $opts[CURLOPT_TIMEOUT] = 80; 84 $opts[CURLOPT_RETURNTRANSFER] = true; 85 $opts[CURLOPT_HTTPHEADER] = $headers; 86 $opts[CURLOPT_USERPWD] = $myApiKey.':'; 87 $opts[CURLOPT_SSL_VERIFYPEER] = false; 88 $opts[CURLOPT_HTTPAUTH] = CURLAUTH_BASIC; 89 90 curl_setopt_array($curl, $opts); 91 $rbody = curl_exec($curl); 92 93 if ($rbody === false || $rbody == false) { 94 $errno = curl_errno($curl); 95 $message = curl_error($curl); 96 curl_close($curl); 97 self::_handleCurlError($errno, $message); 98 } 99 100 $rcode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 101 curl_close($curl); 99 102 100 return array($rbody, $rcode); 101 } 102 103 protected static function _handleCurlError($errno, $message){ 104 $apiBase = TalentLMS::$apiBase; 105 106 if($errno == CURLE_COULDNT_CONNECT || $errno == CURLE_COULDNT_RESOLVE_HOST || $errno == CURLE_OPERATION_TIMEOUTED){ 107 $msg = "Could not connect to TalentLMS (".$apiBase."). Please check your internet connection and try again."; 108 } 109 else{ 110 $msg = "Unexpected error while communicating with TalentLMS. Please try again."; 111 } 112 113 $msg .= "\n\n(Network error: ".$message.")"; 114 throw new TalentLMS_ApiError($msg); 115 } 116 117 protected static function _handleApiError($rbody, $rcode, $response){ 118 if(!is_array($response) || !isset($response['error'])){ 119 throw new TalentLMS_ApiError("Invalid response object from API: ".$rbody." (HTTP response code was: ".$rcode.")", $rcode, $rbody, $response); 120 } 103 return array($rbody, $rcode); 104 } 105 106 protected static function _handleCurlError($errno, $message) 107 { 108 $apiBase = TalentLMS::$apiBase; 109 110 if ($errno == CURLE_COULDNT_CONNECT || $errno == CURLE_COULDNT_RESOLVE_HOST || $errno == CURLE_OPERATION_TIMEOUTED) { 111 $msg = "Could not connect to TalentLMS (".$apiBase."). Please check your internet connection and try again."; 112 } else { 113 $msg = "Unexpected error while communicating with TalentLMS. Please try again."; 114 } 115 116 $msg .= "\n\n(Network error: ".$message.")"; 117 throw new TalentLMS_ApiError($msg); 118 } 119 120 protected static function _handleApiError($rbody, $rcode, $response) 121 { 122 if (!is_array($response) || !isset($response['error'])) { 123 throw new TalentLMS_ApiError("Invalid response object from API: ".$rbody." (HTTP response code was: ".$rcode.")", $rcode, $rbody, $response); 124 } 121 125 122 throw new TalentLMS_ApiError(isset($response['error']['message']) ? $response['error']['message'] : null, $rcode, $rbody, $response);123 }126 throw new TalentLMS_ApiError(isset($response['error']['message']) ? $response['error']['message'] : null, $rcode, $rbody, $response); 127 } 124 128 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/ApiResource.php
r2750739 r2873721 1 1 <?php 2 2 3 abstract class TalentLMS_ApiResource{ 4 5 protected static function _scopedRetrieve($class, $id){ 6 $url = self::_instanceUrl($class, $id); 7 $response = TalentLMS_ApiRequestor::request('get', $url); 8 9 return $response; 10 } 11 12 protected static function _scopedAll($class){ 13 $url = self::_classUrl($class); 14 $response = TalentLMS_ApiRequestor::request('get', $url); 15 16 return $response; 17 } 18 19 protected static function _scopedLogin($class, $params){ 20 self::_validateCall('login', $class, $params); 21 $url = self::_postUrl('login'); 22 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 23 24 return $response; 25 } 26 27 protected static function _scopedLogout($class, $params){ 28 self::_validateCall('logout', $class, $params); 29 $url = self::_postUrl('logout'); 30 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 31 32 return $response; 33 } 34 35 protected static function _scopedSignup($class, $params){ 36 self::_validateCall('signup', $class, $params); 37 $url = self::_postUrl('signup'); 38 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 39 40 return $response; 41 } 42 43 protected static function _scopedAddUserToCourse($class, $params){ 44 self::_validateCall('addUser', $class, $params); 45 $url = self::_postUrl('addUser'); 46 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 47 48 return $response; 49 } 50 51 protected static function _scopedRemoveUserFromCourse($class, $params){ 52 $url = self::_instanceUrlByParams('removeUserFromCourse', $params); 53 $response = TalentLMS_ApiRequestor::request('get', $url); 54 55 return $response; 56 } 57 58 protected static function _scopedResetUserProgress($class, $params){ 59 $url = self::_instanceUrlByParams('resetUserProgress', $params); 60 $response = TalentLMS_ApiRequestor::request('get', $url); 61 62 return $response; 63 } 64 65 protected static function _scopedGotoCourse($class, $params){ 66 $url = self::_instanceUrlByParams('gotoCourse', $params); 67 $response = TalentLMS_ApiRequestor::request('get', $url); 68 69 return $response; 70 } 71 72 protected static function _scopedBuyCourse($class, $params){ 73 self::_validateCall('buyCourse', $class, $params); 74 $url = self::_postUrl('buyCourse'); 75 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 76 77 return $response; 78 } 79 80 protected static function _scopedBuyCategoryCourses($class, $params){ 81 self::_validateCall('buyCategoryCourses', $class, $params); 82 $url = self::_postUrl('buyCategoryCourses'); 83 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 84 85 return $response; 86 } 87 88 protected static function _scopedRetrieveLeafsAndCourses($class, $id){ 89 $url = self::_instanceUrlByMethodName('leafsAndCourses', $id); 90 $response = TalentLMS_ApiRequestor::request('get', $url); 91 92 return $response; 93 } 94 95 protected static function _scopedGetCustomRegistrationFields($class){ 96 $url = self::_classUrlByMethodName('customRegistrationFields'); 97 $response = TalentLMS_ApiRequestor::request('get', $url); 98 99 return $response; 100 } 101 102 protected static function _scopedSetUserStatus($class, $params){ 103 $url = self::_instanceUrlByParams('userSetStatus', $params); 104 $response = TalentLMS_ApiRequestor::request('get', $url); 105 106 return $response; 107 } 108 109 protected static function _scopedSetBranchStatus($class, $params){ 110 $url = self::_instanceUrlByParams('branchSetStatus', $params); 111 $response = TalentLMS_ApiRequestor::request('get', $url); 112 113 return $response; 114 } 115 116 protected static function _scopedAddUserToGroup($class, $params){ 117 $url = self::_instanceUrlByParams('addUserToGroup', $params); 118 $response = TalentLMS_ApiRequestor::request('get', $url); 119 120 return $response; 121 } 122 123 protected static function _scopedRemoveUserFromGroup($class, $params){ 124 $url = self::_instanceUrlByParams('removeUserFromGroup', $params); 125 $response = TalentLMS_ApiRequestor::request('get', $url); 126 127 return $response; 128 } 129 130 protected static function _scopedAddCourseToGroup($class, $params){ 131 $url = self::_instanceUrlByParams('addCourseToGroup', $params); 132 $response = TalentLMS_ApiRequestor::request('get', $url); 133 134 return $response; 135 } 136 137 protected static function _scopedAddUserToBranch($class, $params){ 138 $url = self::_instanceUrlByParams('addUserToBranch', $params); 139 $response = TalentLMS_ApiRequestor::request('get', $url); 140 141 return $response; 142 } 143 144 protected static function _scopedRemoveUserFromBranch($class, $params){ 145 $url = self::_instanceUrlByParams('removeUserFromBranch', $params); 146 $response = TalentLMS_ApiRequestor::request('get', $url); 147 148 return $response; 149 } 150 151 protected static function _scopedAddCourseToBranch($class, $params){ 152 $url = self::_instanceUrlByParams('addCourseToBranch', $params); 153 $response = TalentLMS_ApiRequestor::request('get', $url); 154 155 return $response; 156 } 157 158 protected static function _scopedForgotUsername($class, $params){ 159 $url = self::_instanceUrlByParams('forgotUsername', $params); 160 $response = TalentLMS_ApiRequestor::request('get', $url); 161 162 return $response; 163 } 164 165 protected static function _scopedForgotPassword($class, $params){ 166 $url = self::_instanceUrlByParams('forgotPassword', $params); 167 $response = TalentLMS_ApiRequestor::request('get', $url); 168 169 return $response; 170 } 171 172 protected static function _scopedExtendedUserRetrieve($class, $params){ 173 $url = self::_instanceUrlByParams('users', $params); 174 $response = TalentLMS_ApiRequestor::request('get', $url); 175 176 return $response; 177 } 178 179 protected static function _scopedGetRateLimit($class){ 180 $url = self::_instanceUrlByParams('getRateLimit', array()); 181 $response = TalentLMS_ApiRequestor::request('get', $url); 182 183 return $response; 184 } 185 186 protected static function _scopedGetUsersProgressInUnits($class, $params){ 187 $url = self::_instanceUrlByParams('getUsersProgressInUnits', $params); 188 $response = TalentLMS_ApiRequestor::request('get', $url); 189 190 return $response; 191 } 192 193 protected static function _scopedGetTestAnswers($class, $params){ 194 $url = self::_instanceUrlByParams('getTestAnswers', $params); 195 $response = TalentLMS_ApiRequestor::request('get', $url); 196 197 return $response; 198 } 199 200 protected static function _scopedGetSurveyAnswers($class, $params){ 201 $url = self::_instanceUrlByParams('getSurveyAnswers', $params); 202 $response = TalentLMS_ApiRequestor::request('get', $url); 203 204 return $response; 205 } 206 207 protected static function _scopedGetIltSessions($class, $params){ 208 $url = self::_instanceUrlByParams('getIltSessions', $params); 209 $response = TalentLMS_ApiRequestor::request('get', $url); 210 211 return $response; 212 } 213 214 protected static function _scopedCreateCourse($class, $params){ 215 self::_validateCall('create', $class, $params); 216 $url = self::_postUrl('createCourse'); 217 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 218 219 return $response; 220 } 221 222 protected static function _scopedCreateGroup($class, $params){ 223 self::_validateCall('create', $class, $params); 224 $url = self::_postUrl('createGroup'); 225 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 226 227 return $response; 228 } 229 230 protected static function _scopedCreateBranch($class, $params){ 231 self::_validateCall('create', $class, $params); 232 $url = self::_postUrl('createBranch'); 233 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 234 235 return $response; 236 } 237 238 protected static function _scopedEditUser($class, $params){ 239 self::_validateCall('editUser', $class, $params); 240 $url = self::_postUrl('editUser'); 241 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 242 243 return $response; 244 } 245 246 protected static function _scopedGetUsersByCustomField($class, $params){ 247 $url = self::_instanceUrlByParams('getUsersByCustomField', $params); 248 $response = TalentLMS_ApiRequestor::request('get', $url); 249 250 return $response; 251 } 252 253 protected static function _scopedGetUserStatusInCourse($class, $params){ 254 $url = self::_instanceUrlByParams('getUserStatusInCourse', $params); 255 $response = TalentLMS_ApiRequestor::request('get', $url); 256 257 return $response; 258 } 259 260 protected static function _scopedGetCustomCourseFields($class){ 261 $url = self::_classUrlByMethodName('customCourseFields'); 262 $response = TalentLMS_ApiRequestor::request('get', $url); 263 264 return $response; 265 } 266 267 protected static function _scopedGetCoursesByCustomField($class, $params){ 268 $url = self::_instanceUrlByParams('getCoursesByCustomField', $params); 269 $response = TalentLMS_ApiRequestor::request('get', $url); 270 271 return $response; 272 } 273 274 protected static function _scopedGetTimeline($class, $params){ 275 $url = self::_instanceUrlByParams('getTimeline', $params); 276 $response = TalentLMS_ApiRequestor::request('get', $url); 277 278 return $response; 279 } 280 281 protected static function _scopedDeleteGroup($class, $params){ 282 self::_validateCall('delete', $class, $params); 283 $url = self::_postUrl('deleteGroup'); 284 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 285 286 return $response; 287 } 288 289 protected static function _scopedDeleteBranch($class, $params){ 290 self::_validateCall('delete', $class, $params); 291 $url = self::_postUrl('deleteBranch'); 292 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 293 294 return $response; 295 } 296 297 protected static function _scopedDeleteCourse($class, $params){ 298 self::_validateCall('delete', $class, $params); 299 $url = self::_postUrl('deleteCourse'); 300 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 301 302 return $response; 303 } 304 305 protected static function _scopedDeleteUser($class, $params){ 306 self::_validateCall('delete', $class, $params); 307 $url = self::_postUrl('deleteUser'); 308 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 309 310 return $response; 311 } 312 313 protected static function _instanceUrl($class, $id){ 314 $base = self::_classUrl($class); 315 $url = $base."/id:".$id; 316 317 return $url; 318 } 319 320 protected static function _classUrl($class){ 321 $class = str_replace('TalentLMS_', '', $class); 322 $class = strtolower($class); 323 324 if($class == 'user'){ 325 return "/users"; 326 } 327 else if($class == 'course'){ 328 return "/courses"; 329 } 330 else if($class == 'category'){ 331 return "/categories"; 332 } 333 else if($class == 'branch'){ 334 return "/branches"; 335 } 336 else if($class == 'group'){ 337 return "/groups"; 338 } 339 else if($class == 'siteinfo'){ 340 return "/siteinfo"; 341 } 342 } 343 344 protected static function _instanceUrlByMethodName($method, $id){ 345 $base = self::_classUrlByMethodName($method); 346 $url = $base."/id:".$id; 347 348 return $url; 349 } 350 351 protected static function _instanceUrlByParams($method, $params){ 352 $base = self::_classUrlByMethodName($method); 353 $url = $base."/"; 354 355 foreach($params as $key => $value){ 356 if($key == 'logout_redirect' || $key == 'course_completed_redirect' || $key == 'redirect_url' || $key == 'domain_url'){ 357 $url .= $key.':'.base64_encode($value).','; 358 } 359 else{ 360 $url .= $key.':'.$value.','; 361 } 362 } 363 364 $url = trim($url, ','); 365 366 return $url; 367 } 368 369 protected static function _classUrlByMethodName($method){ 370 if($method == 'leafsAndCourses'){ 371 return "/categoryleafsandcourses"; 372 } 373 else if($method == 'customRegistrationFields'){ 374 return "/getcustomregistrationfields"; 375 } 376 else if($method == 'userSetStatus'){ 377 return "/usersetstatus"; 378 } 379 else if($method == 'branchSetStatus'){ 380 return "/branchsetstatus"; 381 } 382 else if($method == 'gotoCourse'){ 383 return "/gotocourse"; 384 } 385 else if($method == 'addUserToGroup'){ 386 return "/addusertogroup"; 387 } 388 else if($method == 'removeUserFromGroup'){ 389 return "/removeuserfromgroup"; 390 } 391 else if($method == 'addCourseToGroup'){ 392 return "/addcoursetogroup"; 393 } 394 else if($method == 'addUserToBranch'){ 395 return "/addusertobranch"; 396 } 397 else if($method == 'removeUserFromBranch'){ 398 return "/removeuserfrombranch"; 399 } 400 else if($method == 'addCourseToBranch'){ 401 return "/addcoursetobranch"; 402 } 403 else if($method == 'forgotUsername'){ 404 return "/forgotusername"; 405 } 406 else if($method == 'forgotPassword'){ 407 return "/forgotpassword"; 408 } 409 else if($method == 'users'){ 410 return "/users"; 411 } 412 else if($method == 'getRateLimit'){ 413 return "/ratelimit"; 414 } 415 else if($method == 'getUsersProgressInUnits'){ 416 return "/getusersprogressinunits"; 417 } 418 else if($method == 'getTestAnswers'){ 419 return "/gettestanswers"; 420 } 421 else if($method == 'getSurveyAnswers'){ 422 return "/getsurveyanswers"; 423 } 424 else if($method == 'getIltSessions'){ 425 return "/getiltsessions"; 426 } 427 else if($method == 'getUserStatusInCourse'){ 428 return "/getuserstatusincourse"; 429 } 430 else if($method == 'customCourseFields'){ 431 return "/getcustomcoursefields"; 432 } 433 else if($method == 'getCoursesByCustomField'){ 434 return "/getcoursesbycustomfield"; 435 } 436 else if($method == 'getTimeline'){ 437 return "/gettimeline"; 438 } 439 else if($method == 'removeUserFromCourse'){ 440 return "/removeuserfromcourse"; 441 } 442 else if($method == 'resetUserProgress'){ 443 return "/resetuserprogress"; 444 } 445 else if($method == 'getUsersByCustomField'){ 446 return "/getusersbycustomfield"; 447 } 448 } 449 450 protected static function _postUrl($method){ 451 if($method == 'login'){ 452 return "/userlogin"; 453 } 454 else if($method == 'logout'){ 455 return "/userlogout"; 456 } 457 else if($method == 'addUser'){ 458 return "/addusertocourse"; 459 } 460 else if($method == 'signup'){ 461 return "/usersignup"; 462 } 463 else if($method == 'buyCourse'){ 464 return "/buycourse"; 465 } 466 else if($method == 'buyCategoryCourses'){ 467 return "/buycategorycourses"; 468 } 469 else if($method == 'createCourse'){ 470 return "/createcourse"; 471 } 472 else if($method == 'createGroup'){ 473 return "/creategroup"; 474 } 475 else if($method == 'createBranch'){ 476 return "/createbranch"; 477 } 478 else if($method == 'editUser'){ 479 return "/edituser"; 480 } 481 else if($method == 'deleteGroup'){ 482 return "/deletegroup"; 483 } 484 else if($method == 'deleteBranch'){ 485 return "/deletebranch"; 486 } 487 else if($method == 'deleteCourse'){ 488 return "/deletecourse"; 489 } 490 else if($method == 'deleteUser'){ 491 return "/deleteuser"; 492 } 493 } 494 495 private static function _validateCall($method, $class, $params=null){ 496 if($params && !is_array($params)){ 497 throw new TalentLMS_ApiError("You must pass an array as the first argument to ".$class.'::'.$method."() method calls."); 498 } 499 } 3 abstract class TalentLMS_ApiResource 4 { 5 6 protected static function _scopedRetrieve($class, $id) 7 { 8 $url = self::_instanceUrl($class, $id); 9 $response = TalentLMS_ApiRequestor::request('get', $url); 10 11 return $response; 12 } 13 14 protected static function _scopedAll($class) 15 { 16 $url = self::_classUrl($class); 17 $response = TalentLMS_ApiRequestor::request('get', $url); 18 19 return $response; 20 } 21 22 protected static function _scopedLogin($class, $params) 23 { 24 self::_validateCall('login', $class, $params); 25 $url = self::_postUrl('login'); 26 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 27 28 return $response; 29 } 30 31 protected static function _scopedLogout($class, $params) 32 { 33 self::_validateCall('logout', $class, $params); 34 $url = self::_postUrl('logout'); 35 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 36 37 return $response; 38 } 39 40 protected static function _scopedSignup($class, $params) 41 { 42 self::_validateCall('signup', $class, $params); 43 $url = self::_postUrl('signup'); 44 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 45 46 return $response; 47 } 48 49 protected static function _scopedAddUserToCourse($class, $params) 50 { 51 self::_validateCall('addUser', $class, $params); 52 $url = self::_postUrl('addUser'); 53 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 54 55 return $response; 56 } 57 58 protected static function _scopedRemoveUserFromCourse($class, $params) 59 { 60 $url = self::_instanceUrlByParams('removeUserFromCourse', $params); 61 $response = TalentLMS_ApiRequestor::request('get', $url); 62 63 return $response; 64 } 65 66 protected static function _scopedResetUserProgress($class, $params) 67 { 68 $url = self::_instanceUrlByParams('resetUserProgress', $params); 69 $response = TalentLMS_ApiRequestor::request('get', $url); 70 71 return $response; 72 } 73 74 protected static function _scopedGotoCourse($class, $params) 75 { 76 $url = self::_instanceUrlByParams('gotoCourse', $params); 77 $response = TalentLMS_ApiRequestor::request('get', $url); 78 79 return $response; 80 } 81 82 protected static function _scopedBuyCourse($class, $params) 83 { 84 self::_validateCall('buyCourse', $class, $params); 85 $url = self::_postUrl('buyCourse'); 86 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 87 88 return $response; 89 } 90 91 protected static function _scopedBuyCategoryCourses($class, $params) 92 { 93 self::_validateCall('buyCategoryCourses', $class, $params); 94 $url = self::_postUrl('buyCategoryCourses'); 95 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 96 97 return $response; 98 } 99 100 protected static function _scopedRetrieveLeafsAndCourses($class, $id) 101 { 102 $url = self::_instanceUrlByMethodName('leafsAndCourses', $id); 103 $response = TalentLMS_ApiRequestor::request('get', $url); 104 105 return $response; 106 } 107 108 protected static function _scopedGetCustomRegistrationFields($class) 109 { 110 $url = self::_classUrlByMethodName('customRegistrationFields'); 111 $response = TalentLMS_ApiRequestor::request('get', $url); 112 113 return $response; 114 } 115 116 protected static function _scopedSetUserStatus($class, $params) 117 { 118 $url = self::_instanceUrlByParams('userSetStatus', $params); 119 $response = TalentLMS_ApiRequestor::request('get', $url); 120 121 return $response; 122 } 123 124 protected static function _scopedSetBranchStatus($class, $params) 125 { 126 $url = self::_instanceUrlByParams('branchSetStatus', $params); 127 $response = TalentLMS_ApiRequestor::request('get', $url); 128 129 return $response; 130 } 131 132 protected static function _scopedAddUserToGroup($class, $params) 133 { 134 $url = self::_instanceUrlByParams('addUserToGroup', $params); 135 $response = TalentLMS_ApiRequestor::request('get', $url); 136 137 return $response; 138 } 139 140 protected static function _scopedRemoveUserFromGroup($class, $params) 141 { 142 $url = self::_instanceUrlByParams('removeUserFromGroup', $params); 143 $response = TalentLMS_ApiRequestor::request('get', $url); 144 145 return $response; 146 } 147 148 protected static function _scopedAddCourseToGroup($class, $params) 149 { 150 $url = self::_instanceUrlByParams('addCourseToGroup', $params); 151 $response = TalentLMS_ApiRequestor::request('get', $url); 152 153 return $response; 154 } 155 156 protected static function _scopedAddUserToBranch($class, $params) 157 { 158 $url = self::_instanceUrlByParams('addUserToBranch', $params); 159 $response = TalentLMS_ApiRequestor::request('get', $url); 160 161 return $response; 162 } 163 164 protected static function _scopedRemoveUserFromBranch($class, $params) 165 { 166 $url = self::_instanceUrlByParams('removeUserFromBranch', $params); 167 $response = TalentLMS_ApiRequestor::request('get', $url); 168 169 return $response; 170 } 171 172 protected static function _scopedAddCourseToBranch($class, $params) 173 { 174 $url = self::_instanceUrlByParams('addCourseToBranch', $params); 175 $response = TalentLMS_ApiRequestor::request('get', $url); 176 177 return $response; 178 } 179 180 protected static function _scopedForgotUsername($class, $params) 181 { 182 $url = self::_instanceUrlByParams('forgotUsername', $params); 183 $response = TalentLMS_ApiRequestor::request('get', $url); 184 185 return $response; 186 } 187 188 protected static function _scopedForgotPassword($class, $params) 189 { 190 $url = self::_instanceUrlByParams('forgotPassword', $params); 191 $response = TalentLMS_ApiRequestor::request('get', $url); 192 193 return $response; 194 } 195 196 protected static function _scopedExtendedUserRetrieve($class, $params) 197 { 198 $url = self::_instanceUrlByParams('users', $params); 199 $response = TalentLMS_ApiRequestor::request('get', $url); 200 201 return $response; 202 } 203 204 protected static function _scopedGetRateLimit($class) 205 { 206 $url = self::_instanceUrlByParams('getRateLimit', array()); 207 $response = TalentLMS_ApiRequestor::request('get', $url); 208 209 return $response; 210 } 211 212 protected static function _scopedGetUsersProgressInUnits($class, $params) 213 { 214 $url = self::_instanceUrlByParams('getUsersProgressInUnits', $params); 215 $response = TalentLMS_ApiRequestor::request('get', $url); 216 217 return $response; 218 } 219 220 protected static function _scopedGetTestAnswers($class, $params) 221 { 222 $url = self::_instanceUrlByParams('getTestAnswers', $params); 223 $response = TalentLMS_ApiRequestor::request('get', $url); 224 225 return $response; 226 } 227 228 protected static function _scopedGetSurveyAnswers($class, $params) 229 { 230 $url = self::_instanceUrlByParams('getSurveyAnswers', $params); 231 $response = TalentLMS_ApiRequestor::request('get', $url); 232 233 return $response; 234 } 235 236 protected static function _scopedGetIltSessions($class, $params) 237 { 238 $url = self::_instanceUrlByParams('getIltSessions', $params); 239 $response = TalentLMS_ApiRequestor::request('get', $url); 240 241 return $response; 242 } 243 244 protected static function _scopedCreateCourse($class, $params) 245 { 246 self::_validateCall('create', $class, $params); 247 $url = self::_postUrl('createCourse'); 248 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 249 250 return $response; 251 } 252 253 protected static function _scopedCreateGroup($class, $params) 254 { 255 self::_validateCall('create', $class, $params); 256 $url = self::_postUrl('createGroup'); 257 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 258 259 return $response; 260 } 261 262 protected static function _scopedCreateBranch($class, $params) 263 { 264 self::_validateCall('create', $class, $params); 265 $url = self::_postUrl('createBranch'); 266 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 267 268 return $response; 269 } 270 271 protected static function _scopedEditUser($class, $params) 272 { 273 self::_validateCall('editUser', $class, $params); 274 $url = self::_postUrl('editUser'); 275 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 276 277 return $response; 278 } 279 280 protected static function _scopedGetUsersByCustomField($class, $params) 281 { 282 $url = self::_instanceUrlByParams('getUsersByCustomField', $params); 283 $response = TalentLMS_ApiRequestor::request('get', $url); 284 285 return $response; 286 } 287 288 protected static function _scopedGetUserStatusInCourse($class, $params) 289 { 290 $url = self::_instanceUrlByParams('getUserStatusInCourse', $params); 291 $response = TalentLMS_ApiRequestor::request('get', $url); 292 293 return $response; 294 } 295 296 protected static function _scopedGetCustomCourseFields($class) 297 { 298 $url = self::_classUrlByMethodName('customCourseFields'); 299 $response = TalentLMS_ApiRequestor::request('get', $url); 300 301 return $response; 302 } 303 304 protected static function _scopedGetCoursesByCustomField($class, $params) 305 { 306 $url = self::_instanceUrlByParams('getCoursesByCustomField', $params); 307 $response = TalentLMS_ApiRequestor::request('get', $url); 308 309 return $response; 310 } 311 312 protected static function _scopedGetTimeline($class, $params) 313 { 314 $url = self::_instanceUrlByParams('getTimeline', $params); 315 $response = TalentLMS_ApiRequestor::request('get', $url); 316 317 return $response; 318 } 319 320 protected static function _scopedDeleteGroup($class, $params) 321 { 322 self::_validateCall('delete', $class, $params); 323 $url = self::_postUrl('deleteGroup'); 324 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 325 326 return $response; 327 } 328 329 protected static function _scopedDeleteBranch($class, $params) 330 { 331 self::_validateCall('delete', $class, $params); 332 $url = self::_postUrl('deleteBranch'); 333 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 334 335 return $response; 336 } 337 338 protected static function _scopedDeleteCourse($class, $params) 339 { 340 self::_validateCall('delete', $class, $params); 341 $url = self::_postUrl('deleteCourse'); 342 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 343 344 return $response; 345 } 346 347 protected static function _scopedDeleteUser($class, $params) 348 { 349 self::_validateCall('delete', $class, $params); 350 $url = self::_postUrl('deleteUser'); 351 $response = TalentLMS_ApiRequestor::request('post', $url, $params); 352 353 return $response; 354 } 355 356 protected static function _instanceUrl($class, $id) 357 { 358 $base = self::_classUrl($class); 359 $url = $base."/id:".$id; 360 361 return $url; 362 } 363 364 protected static function _classUrl($class) 365 { 366 $class = str_replace('TalentLMS_', '', $class); 367 $class = strtolower($class); 368 369 if ($class == 'user') { 370 return "/users"; 371 } elseif ($class == 'course') { 372 return "/courses"; 373 } elseif ($class == 'category') { 374 return "/categories"; 375 } elseif ($class == 'branch') { 376 return "/branches"; 377 } elseif ($class == 'group') { 378 return "/groups"; 379 } elseif ($class == 'siteinfo') { 380 return "/siteinfo"; 381 } 382 } 383 384 protected static function _instanceUrlByMethodName($method, $id) 385 { 386 $base = self::_classUrlByMethodName($method); 387 $url = $base."/id:".$id; 388 389 return $url; 390 } 391 392 protected static function _instanceUrlByParams($method, $params) 393 { 394 $base = self::_classUrlByMethodName($method); 395 $url = $base."/"; 396 397 foreach ($params as $key => $value) { 398 if ($key == 'logout_redirect' || $key == 'course_completed_redirect' || $key == 'redirect_url' || $key == 'domain_url') { 399 $url .= $key.':'.base64_encode($value).','; 400 } else { 401 $url .= $key.':'.$value.','; 402 } 403 } 404 405 $url = trim($url, ','); 406 407 return $url; 408 } 409 410 protected static function _classUrlByMethodName($method) 411 { 412 if ($method == 'leafsAndCourses') { 413 return "/categoryleafsandcourses"; 414 } elseif ($method == 'customRegistrationFields') { 415 return "/getcustomregistrationfields"; 416 } elseif ($method == 'userSetStatus') { 417 return "/usersetstatus"; 418 } elseif ($method == 'branchSetStatus') { 419 return "/branchsetstatus"; 420 } elseif ($method == 'gotoCourse') { 421 return "/gotocourse"; 422 } elseif ($method == 'addUserToGroup') { 423 return "/addusertogroup"; 424 } elseif ($method == 'removeUserFromGroup') { 425 return "/removeuserfromgroup"; 426 } elseif ($method == 'addCourseToGroup') { 427 return "/addcoursetogroup"; 428 } elseif ($method == 'addUserToBranch') { 429 return "/addusertobranch"; 430 } elseif ($method == 'removeUserFromBranch') { 431 return "/removeuserfrombranch"; 432 } elseif ($method == 'addCourseToBranch') { 433 return "/addcoursetobranch"; 434 } elseif ($method == 'forgotUsername') { 435 return "/forgotusername"; 436 } elseif ($method == 'forgotPassword') { 437 return "/forgotpassword"; 438 } elseif ($method == 'users') { 439 return "/users"; 440 } elseif ($method == 'getRateLimit') { 441 return "/ratelimit"; 442 } elseif ($method == 'getUsersProgressInUnits') { 443 return "/getusersprogressinunits"; 444 } elseif ($method == 'getTestAnswers') { 445 return "/gettestanswers"; 446 } elseif ($method == 'getSurveyAnswers') { 447 return "/getsurveyanswers"; 448 } elseif ($method == 'getIltSessions') { 449 return "/getiltsessions"; 450 } elseif ($method == 'getUserStatusInCourse') { 451 return "/getuserstatusincourse"; 452 } elseif ($method == 'customCourseFields') { 453 return "/getcustomcoursefields"; 454 } elseif ($method == 'getCoursesByCustomField') { 455 return "/getcoursesbycustomfield"; 456 } elseif ($method == 'getTimeline') { 457 return "/gettimeline"; 458 } elseif ($method == 'removeUserFromCourse') { 459 return "/removeuserfromcourse"; 460 } elseif ($method == 'resetUserProgress') { 461 return "/resetuserprogress"; 462 } elseif ($method == 'getUsersByCustomField') { 463 return "/getusersbycustomfield"; 464 } 465 } 466 467 protected static function _postUrl($method) 468 { 469 if ($method == 'login') { 470 return "/userlogin"; 471 } elseif ($method == 'logout') { 472 return "/userlogout"; 473 } elseif ($method == 'addUser') { 474 return "/addusertocourse"; 475 } elseif ($method == 'signup') { 476 return "/usersignup"; 477 } elseif ($method == 'buyCourse') { 478 return "/buycourse"; 479 } elseif ($method == 'buyCategoryCourses') { 480 return "/buycategorycourses"; 481 } elseif ($method == 'createCourse') { 482 return "/createcourse"; 483 } elseif ($method == 'createGroup') { 484 return "/creategroup"; 485 } elseif ($method == 'createBranch') { 486 return "/createbranch"; 487 } elseif ($method == 'editUser') { 488 return "/edituser"; 489 } elseif ($method == 'deleteGroup') { 490 return "/deletegroup"; 491 } elseif ($method == 'deleteBranch') { 492 return "/deletebranch"; 493 } elseif ($method == 'deleteCourse') { 494 return "/deletecourse"; 495 } elseif ($method == 'deleteUser') { 496 return "/deleteuser"; 497 } 498 } 499 500 private static function _validateCall($method, $class, $params = null) 501 { 502 if ($params && !is_array($params)) { 503 throw new TalentLMS_ApiError("You must pass an array as the first argument to ".$class.'::'.$method."() method calls."); 504 } 505 } 500 506 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/Branch.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_Branch extends TalentLMS_ApiResource{ 4 5 public static function create($params){ 6 $class = get_class(); 7 return self::_scopedCreateBranch($class, $params); 8 } 9 10 public static function retrieve($id){ 11 $class = get_class(); 12 return self::_scopedRetrieve($class, $id); 13 } 14 15 public static function all(){ 16 $class = get_class(); 17 return self::_scopedAll($class); 18 } 3 class TalentLMS_Branch extends TalentLMS_ApiResource 4 { 5 6 public static function create($params) 7 { 8 $class = get_class(); 9 return self::_scopedCreateBranch($class, $params); 10 } 11 12 public static function retrieve($id) 13 { 14 $class = get_class(); 15 return self::_scopedRetrieve($class, $id); 16 } 17 18 public static function all() 19 { 20 $class = get_class(); 21 return self::_scopedAll($class); 22 } 19 23 20 public static function delete($params){ 21 $class = get_class(); 22 return self::_scopedDeleteBranch($class, $params); 23 } 24 public static function delete($params) 25 { 26 $class = get_class(); 27 return self::_scopedDeleteBranch($class, $params); 28 } 24 29 25 public static function addUser($params){ 26 $class = get_class(); 27 return self::_scopedAddUserToBranch($class, $params); 28 } 30 public static function addUser($params) 31 { 32 $class = get_class(); 33 return self::_scopedAddUserToBranch($class, $params); 34 } 29 35 30 public static function removeUser($params){ 31 $class = get_class(); 32 return self::_scopedRemoveUserFromBranch($class, $params); 33 } 36 public static function removeUser($params) 37 { 38 $class = get_class(); 39 return self::_scopedRemoveUserFromBranch($class, $params); 40 } 34 41 35 public static function addCourse($params){ 36 $class = get_class(); 37 return self::_scopedAddCourseToBranch($class, $params); 38 } 42 public static function addCourse($params) 43 { 44 $class = get_class(); 45 return self::_scopedAddCourseToBranch($class, $params); 46 } 39 47 40 public static function setStatus($params){ 41 $class = get_class(); 42 return self::_scopedSetBranchStatus($class, $params); 43 } 48 public static function setStatus($params) 49 { 50 $class = get_class(); 51 return self::_scopedSetBranchStatus($class, $params); 52 } 44 53 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/Category.php
r1682753 r2873721 1 1 <?php 2 2 3 class TalentLMS_Category extends TalentLMS_ApiResource{ 4 5 public static function retrieve($id){ 6 $class = get_class(); 7 return self::_scopedRetrieve($class, $id); 8 } 9 10 public static function all(){ 11 $class = get_class(); 12 return self::_scopedAll($class); 13 } 14 15 public static function retrieveLeafsAndCourses($id){ 16 $class = get_class(); 17 return self::_scopedRetrieveLeafsAndCourses($class, $id); 18 } 19 20 public static function buyCategoryCourses($params){ 21 $class = get_class(); 22 return self::_scopedBuyCategoryCourses($class, $params); 23 } 3 class TalentLMS_Category extends TalentLMS_ApiResource 4 { 5 6 public static function retrieve($id) 7 { 8 $class = get_class(); 9 return self::_scopedRetrieve($class, $id); 10 } 11 12 public static function all() 13 { 14 $class = get_class(); 15 return self::_scopedAll($class); 16 } 17 18 public static function retrieveLeafsAndCourses($id) 19 { 20 $class = get_class(); 21 return self::_scopedRetrieveLeafsAndCourses($class, $id); 22 } 23 24 public static function buyCategoryCourses($params) 25 { 26 $class = get_class(); 27 return self::_scopedBuyCategoryCourses($class, $params); 28 } 24 29 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/Course.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_Course extends TalentLMS_ApiResource{ 4 5 public static function create($params){ 6 $class = get_class(); 7 return self::_scopedCreateCourse($class, $params); 8 } 9 10 public static function retrieve($id){ 11 $class = get_class(); 12 return self::_scopedRetrieve($class, $id); 13 } 14 15 public static function all(){ 16 $class = get_class(); 17 return self::_scopedAll($class); 18 } 3 class TalentLMS_Course extends TalentLMS_ApiResource 4 { 5 6 public static function create($params) 7 { 8 $class = get_class(); 9 return self::_scopedCreateCourse($class, $params); 10 } 11 12 public static function retrieve($id) 13 { 14 $class = get_class(); 15 return self::_scopedRetrieve($class, $id); 16 } 17 18 public static function all() 19 { 20 $class = get_class(); 21 return self::_scopedAll($class); 22 } 19 23 20 public static function delete($params){ 21 $class = get_class(); 22 return self::_scopedDeleteCourse($class, $params); 23 } 24 public static function delete($params) 25 { 26 $class = get_class(); 27 return self::_scopedDeleteCourse($class, $params); 28 } 24 29 25 public static function addUser($params){ 26 $class = get_class(); 27 return self::_scopedAddUserToCourse($class, $params); 28 } 29 30 public static function removeUser($params){ 31 $class = get_class(); 32 return self::_scopedRemoveUserFromCourse($class, $params); 33 } 34 35 public static function gotoCourse($params){ 36 $class = get_class(); 37 return self::_scopedGotoCourse($class, $params); 38 } 39 40 public static function buyCourse($params){ 41 $class = get_class(); 42 return self::_scopedBuyCourse($class, $params); 43 } 44 45 public static function getUserStatus($params){ 46 $class = get_class(); 47 return self::_scopedGetUserStatusInCourse($class, $params); 48 } 30 public static function addUser($params) 31 { 32 $class = get_class(); 33 return self::_scopedAddUserToCourse($class, $params); 34 } 35 36 public static function removeUser($params) 37 { 38 $class = get_class(); 39 return self::_scopedRemoveUserFromCourse($class, $params); 40 } 41 42 public static function gotoCourse($params) 43 { 44 $class = get_class(); 45 return self::_scopedGotoCourse($class, $params); 46 } 47 48 public static function buyCourse($params) 49 { 50 $class = get_class(); 51 return self::_scopedBuyCourse($class, $params); 52 } 53 54 public static function getUserStatus($params) 55 { 56 $class = get_class(); 57 return self::_scopedGetUserStatusInCourse($class, $params); 58 } 49 59 50 public static function getCustomCourseFields(){ 51 $class = get_class(); 52 return self::_scopedGetCustomCourseFields($class); 53 } 60 public static function getCustomCourseFields() 61 { 62 $class = get_class(); 63 return self::_scopedGetCustomCourseFields($class); 64 } 54 65 55 public static function getByCustomField($params){ 56 $class = get_class(); 57 return self::_scopedGetCoursesByCustomField($class, $params); 58 } 66 public static function getByCustomField($params) 67 { 68 $class = get_class(); 69 return self::_scopedGetCoursesByCustomField($class, $params); 70 } 59 71 60 public static function resetUserProgress($params){ 61 $class = get_class(); 62 return self::_scopedResetUserProgress($class, $params); 63 } 72 public static function resetUserProgress($params) 73 { 74 $class = get_class(); 75 return self::_scopedResetUserProgress($class, $params); 76 } 64 77 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/Group.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_Group extends TalentLMS_ApiResource{ 4 5 public static function create($params){ 6 $class = get_class(); 7 return self::_scopedCreateGroup($class, $params); 8 } 9 10 public static function retrieve($id){ 11 $class = get_class(); 12 return self::_scopedRetrieve($class, $id); 13 } 14 15 public static function all(){ 16 $class = get_class(); 17 return self::_scopedAll($class); 18 } 3 class TalentLMS_Group extends TalentLMS_ApiResource 4 { 5 6 public static function create($params) 7 { 8 $class = get_class(); 9 return self::_scopedCreateGroup($class, $params); 10 } 11 12 public static function retrieve($id) 13 { 14 $class = get_class(); 15 return self::_scopedRetrieve($class, $id); 16 } 17 18 public static function all() 19 { 20 $class = get_class(); 21 return self::_scopedAll($class); 22 } 19 23 20 public static function delete($params){ 21 $class = get_class(); 22 return self::_scopedDeleteGroup($class, $params); 23 } 24 public static function delete($params) 25 { 26 $class = get_class(); 27 return self::_scopedDeleteGroup($class, $params); 28 } 24 29 25 public static function addUser($params){ 26 $class = get_class(); 27 return self::_scopedAddUserToGroup($class, $params); 28 } 29 30 public static function removeUser($params){ 31 $class = get_class(); 32 return self::_scopedRemoveUserFromGroup($class, $params); 33 } 34 35 public static function addCourse($params){ 36 $class = get_class(); 37 return self::_scopedAddCourseToGroup($class, $params); 38 } 30 public static function addUser($params) 31 { 32 $class = get_class(); 33 return self::_scopedAddUserToGroup($class, $params); 34 } 35 36 public static function removeUser($params) 37 { 38 $class = get_class(); 39 return self::_scopedRemoveUserFromGroup($class, $params); 40 } 41 42 public static function addCourse($params) 43 { 44 $class = get_class(); 45 return self::_scopedAddCourseToGroup($class, $params); 46 } 39 47 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/SiteInfo.php
r1682753 r2873721 1 1 <?php 2 2 3 class TalentLMS_Siteinfo extends TalentLMS_ApiResource{ 4 5 public static function get(){ 6 $class = get_class(); 7 return self::_scopedAll($class); 8 } 9 10 public static function getRateLimit(){ 11 $class = get_class(); 12 return self::_scopedGetRateLimit($class); 13 } 14 15 public static function getTimeline($params){ 16 $class = get_class(); 17 return self::_scopedGetTimeline($class, $params); 18 } 3 class TalentLMS_Siteinfo extends TalentLMS_ApiResource 4 { 5 6 public static function get() 7 { 8 $class = get_class(); 9 return self::_scopedAll($class); 10 } 11 12 public static function getRateLimit() 13 { 14 $class = get_class(); 15 return self::_scopedGetRateLimit($class); 16 } 17 18 public static function getTimeline($params) 19 { 20 $class = get_class(); 21 return self::_scopedGetTimeline($class, $params); 22 } 19 23 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/Unit.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_Unit extends TalentLMS_ApiResource{ 4 5 public static function getUsersProgress($params){ 6 $class = get_class(); 7 return self::_scopedGetUsersProgressInUnits($class, $params); 8 } 9 10 public static function getTestAnswers($params){ 11 $class = get_class(); 12 return self::_scopedGetTestAnswers($class, $params); 13 } 14 15 public static function getSurveyAnswers($params){ 16 $class = get_class(); 17 return self::_scopedGetSurveyAnswers($class, $params); 18 } 3 class TalentLMS_Unit extends TalentLMS_ApiResource 4 { 5 6 public static function getUsersProgress($params) 7 { 8 $class = get_class(); 9 return self::_scopedGetUsersProgressInUnits($class, $params); 10 } 11 12 public static function getTestAnswers($params) 13 { 14 $class = get_class(); 15 return self::_scopedGetTestAnswers($class, $params); 16 } 17 18 public static function getSurveyAnswers($params) 19 { 20 $class = get_class(); 21 return self::_scopedGetSurveyAnswers($class, $params); 22 } 19 23 20 public static function getIltSessions($params){ 21 $class = get_class(); 22 return self::_scopedGetIltSessions($class, $params); 23 } 24 public static function getIltSessions($params) 25 { 26 $class = get_class(); 27 return self::_scopedGetIltSessions($class, $params); 28 } 24 29 } -
talentlms/trunk/TalentLMSLib/lib/TalentLMS/User.php
r2750739 r2873721 1 1 <?php 2 2 3 class TalentLMS_User extends TalentLMS_ApiResource{ 4 5 public static function retrieve($params){ 6 $class = get_class(); 7 8 if(!is_array($params)){ // retrieve by id 9 return self::_scopedRetrieve($class, $params); 10 } 11 else{ // e.g. retrieve by email address 12 return self::_scopedExtendedUserRetrieve($class, $params); 13 } 14 } 15 16 public static function all(){ 17 $class = get_class(); 18 return self::_scopedAll($class); 19 } 3 class TalentLMS_User extends TalentLMS_ApiResource 4 { 5 6 public static function retrieve($params) 7 { 8 $class = get_class(); 9 10 if (!is_array($params)) { // retrieve by id 11 return self::_scopedRetrieve($class, $params); 12 } else { // e.g. retrieve by email address 13 return self::_scopedExtendedUserRetrieve($class, $params); 14 } 15 } 16 17 public static function all() 18 { 19 $class = get_class(); 20 return self::_scopedAll($class); 21 } 20 22 21 public static function delete($params){ 22 $class = get_class(); 23 return self::_scopedDeleteUser($class, $params); 24 } 23 public static function delete($params) 24 { 25 $class = get_class(); 26 return self::_scopedDeleteUser($class, $params); 27 } 25 28 26 public static function login($params){ 27 $class = get_class(); 28 return self::_scopedLogin($class, $params); 29 } 30 31 public static function logout($params){ 32 $class = get_class(); 33 return self::_scopedLogout($class, $params); 34 } 35 36 public static function signup($params){ 37 $class = get_class(); 38 return self::_scopedSignup($class, $params); 39 } 40 41 public static function getCustomRegistrationFields(){ 42 $class = get_class(); 43 return self::_scopedGetCustomRegistrationFields($class); 44 } 45 46 public static function setStatus($params){ 47 $class = get_class(); 48 return self::_scopedSetUserStatus($class, $params); 49 } 50 51 public static function forgotUsername($params){ 52 $class = get_class(); 53 return self::_scopedForgotUsername($class, $params); 54 } 55 56 public static function forgotPassword($params){ 57 $class = get_class(); 58 return self::_scopedForgotPassword($class, $params); 59 } 60 61 public static function edit($params){ 62 $class = get_class(); 63 return self::_scopedEditUser($class, $params); 64 } 65 66 public static function getByCustomField($params){ 67 $class = get_class(); 68 return self::_scopedGetUsersByCustomField($class, $params); 69 } 29 public static function login($params) 30 { 31 $class = get_class(); 32 return self::_scopedLogin($class, $params); 33 } 34 35 public static function logout($params) 36 { 37 $class = get_class(); 38 return self::_scopedLogout($class, $params); 39 } 40 41 public static function signup($params) 42 { 43 $class = get_class(); 44 return self::_scopedSignup($class, $params); 45 } 46 47 public static function getCustomRegistrationFields() 48 { 49 $class = get_class(); 50 return self::_scopedGetCustomRegistrationFields($class); 51 } 52 53 public static function setStatus($params) 54 { 55 $class = get_class(); 56 return self::_scopedSetUserStatus($class, $params); 57 } 58 59 public static function forgotUsername($params) 60 { 61 $class = get_class(); 62 return self::_scopedForgotUsername($class, $params); 63 } 64 65 public static function forgotPassword($params) 66 { 67 $class = get_class(); 68 return self::_scopedForgotPassword($class, $params); 69 } 70 71 public static function edit($params) 72 { 73 $class = get_class(); 74 return self::_scopedEditUser($class, $params); 75 } 76 77 public static function getByCustomField($params) 78 { 79 $class = get_class(); 80 return self::_scopedGetUsersByCustomField($class, $params); 81 } 70 82 } -
talentlms/trunk/readme.txt
r2828674 r2873721 5 5 Tested up to: 6.1.1 6 6 Requires PHP: 5.2.4 7 Stable tag: trunk7 Stable tag: 7.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 55 55 56 56 == Changelog == 57 58 = 7.0 = 59 60 * Added support for Wordpress 6.1.1 61 * Refactor plugin's codebase 62 * Use your own custom css rules 63 * No support for Wordpress Site Editor 57 64 58 65 = 6.6.9.5 = -
talentlms/trunk/talentlms.php
r2826498 r2873721 3 3 Plugin Name: TalentLMS 4 4 Plugin URI: http://wordpress.org/extend/plugins/talentlms/ 5 Description: This plugin integrates Talent lms with Wordpress. Promote your TalentLMS content through your WordPress site.6 Version: 6.6.9.55 Description: This plugin integrates TalentLMS with WordPress. Promote your TalentLMS content through your WordPress site. 6 Version: 7.0 7 7 Author: Epignosis LLC 8 8 Author URI: www.epignosishq.com … … 10 10 */ 11 11 12 define("_TLMS_VERSION_", "6.6.9.5"); 13 define("_TLMS_BASEPATH_", dirname(__FILE__)); 14 define("_TLMS_BASEURL_", plugin_dir_url(__FILE__)); 12 /** 13 * Require once the Composer Autoload 14 */ 15 if (file_exists(plugin_dir_path(__FILE__) . 'vendor/autoload.php')) { 16 require_once plugin_dir_path(__FILE__) . 'vendor/autoload.php'; 17 } 15 18 16 require_once (_TLMS_BASEPATH_ . '/TalentLMSLib/lib/TalentLMS.php'); 19 /** 20 * Define constants 21 */ 22 define('TLMS_BASEPATH', dirname(__FILE__)); 23 define('TLMS_BASEURL', plugin_dir_url(__FILE__)); 24 define('TLMS_VERSION', '7.0'); 25 define('TLMS_UPLOAD_DIR', 'talentlmswpplugin'); 26 /** 27 * The code that runs during plugin activation 28 */ 29 function activate(): void 30 { 31 TalentlmsIntegration\Activate::tlms_activate(); 32 } 33 register_activation_hook(__FILE__, 'activate'); 17 34 18 require_once (_TLMS_BASEPATH_ . '/utils/utils.php');19 require_once (_TLMS_BASEPATH_ . '/utils/db.php');20 require_once (_TLMS_BASEPATH_ . '/utils/install.php');21 require_once (_TLMS_BASEPATH_ . '/admin/admin.php');22 require_once (_TLMS_BASEPATH_ . '/shortcodes/reg_shortcodes.php');23 require_once (_TLMS_BASEPATH_ . '/integrations/woocommerce.php');24 require_once (_TLMS_BASEPATH_ . '/widgets/reg_widgets.php');25 26 27 register_activation_hook(__FILE__, 'tlms_install');28 35 register_uninstall_hook(__FILE__, 'tlms_uninstall'); 29 36 30 function tlms_isWoocommerceActive() { 31 if ( is_plugin_active('woocommerce/woocommerce.php') ) { 32 update_option('tlms-woocommerce-active', 1); 33 } else { 34 update_option('tlms-woocommerce-active', 0); 35 } 36 if( empty(get_option('tlms-enroll-user-to-courses')) ){ 37 update_option('tlms-enroll-user-to-courses', 'submission'); 37 if (file_exists(TLMS_BASEPATH . '/TalentLMSLib/lib/TalentLMS.php')) { 38 require_once TLMS_BASEPATH . '/TalentLMSLib/lib/TalentLMS.php'; 39 } 40 41 if (class_exists('TalentlmsIntegration\Plugin')) { 42 TalentlmsIntegration\Plugin::init(); 43 } 44 45 function tlms_isWoocommerceActive() 46 { 47 if (is_plugin_active('woocommerce/woocommerce.php')) { 48 update_option('tlms-woocommerce-active', 1); 49 } else { 50 update_option('tlms-woocommerce-active', 0); 51 } 52 if (empty(get_option('tlms-enroll-user-to-courses'))) { 53 update_option('tlms-enroll-user-to-courses', 'submission'); 38 54 } 39 55 } 40 add_action( 'admin_init', 'tlms_isWoocommerceActive');56 add_action('admin_init', 'tlms_isWoocommerceActive');
Note: See TracChangeset
for help on using the changeset viewer.