Plugin Directory

Changeset 2873721


Ignore:
Timestamp:
03/02/2023 02:34:35 PM (3 years ago)
Author:
panagop
Message:

version 7.0

Location:
talentlms
Files:
28 edited
1 copied

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
    103
    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
    1210
    13 == Description ==
     11This 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
    1436
    1537[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.
     
    2042* [TalentLMS - Get started in 5'](https://www.talentlms.com/blog/talentlms-get-started-in-5/ "TalentLMS - Get started in 5'")
    2143
    22 ## Plugin Features ##
     44### Plugin Features
    2345
    2446* List your TalentLMS courses and their content in WordPress.
    2547* Integrate your TalentLMS courses as WooCommerce products
    2648
    27 == Installation ==
     49## Getting Started
    2850
    29 #To Install:#
     51### Installation
    3052
    31531. Download TalentLMS WordPress plugin
    32 1. Unzip the file into a folder on your hard drive
    33 1. Upload `/talentlms/` folder to the `/wp-content/plugins/` folder on your site
    34 1. Visit your WordPress _Administration -> Plugins_ and activate TalentLMS WordPress plugin
     542. Unzip the file into a folder on your hard drive
     553. Upload `/talentlms/` folder to the `/wp-content/plugins/` folder on your site
     564. Visit your WordPress _Administration -> Plugins_ and activate TalentLMS WordPress plugin
    3557
    3658Alternatively you can automatically install TalentLMS WordPress plugin from the  WordPress Plugin Directory.
    3759
    38 #Usage:#
     60## Usage
    3961
    4062* Once you have activated the plugin, provide your TalentLMS Domain name and TalentLMS API key.
     
    4567    * Insert TalentLMS widget in any registered sidebar of your site.
    4668
    47 == Frequently Asked Questions ==
     69## License
     70
     71Distributed under the [GPLv2 or later License](http://www.gnu.org/licenses/gpl-2.0.html). See `LICENSE.txt` for more information.
     72
     73## FAQ
    4874
    4975If you have a question or any feedback you want to share send us an email at [support@talentlms.com](mailto:support@talentlms.com 'support')
    5076
    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  
    11<?php
    22
    3 if(!function_exists('curl_init')){
    4     throw new Exception('TalentLMS API needs the CURL PHP extension.');
     3if (!function_exists('curl_init')) {
     4    throw new Exception('TalentLMS API needs the CURL PHP extension.');
    55}
    66
    7 if(!function_exists('json_decode')){
    8     throw new Exception('TalentLMS API needs the JSON PHP extension.');
     7if (!function_exists('json_decode')) {
     8    throw new Exception('TalentLMS API needs the JSON PHP extension.');
    99}
    1010
    11 abstract class TalentLMS{
    12     public static $apiKey;
    13     public static $domain;
    14     public static $apiBase;
    15     public static $apiProtocol;
     11abstract class TalentLMS
     12{
     13    public static $apiKey;
     14    public static $domain;
     15    public static $apiBase;
     16    public static $apiProtocol;
    1617
    17     const VERSION = '1.0';
    18     const PREFIX = 'WpPlugin';
     18    const VERSION = '1.0';
     19    const PREFIX = 'WpPlugin';
    1920
    20     public static function getApiKey(){
    21         return self::$apiKey;
    22     }
     21    public static function getApiKey()
     22    {
     23        return self::$apiKey;
     24    }
    2325
    24     public static function setApiKey($apiKey){
    25         self::$apiKey = $apiKey;
    26     }
     26    public static function setApiKey($apiKey)
     27    {
     28        self::$apiKey = $apiKey;
     29    }
    2730
    28     public static function getDomain(){
    29         return self::$domain;
    30     }
     31    public static function getDomain()
     32    {
     33        return self::$domain;
     34    }
    3135
    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    }
    3742
    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;
    4450
    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        }
    4854
    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    }
    5967}
    6068
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/ApiError.php

    r1682753 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1113
    12     public function getHttpStatus(){
    13         return $this->http_status;
    14     }
     14    public function getHttpStatus()
     15    {
     16        return $this->http_status;
     17    }
    1518
    16     public function getHttpBody(){
    17         return $this->http_body;
    18     }
     19    public function getHttpBody()
     20    {
     21        return $this->http_body;
     22    }
    1923
    20     public function getJsonBody(){
    21         return $this->json_body;
    22     }
     24    public function getJsonBody()
     25    {
     26        return $this->json_body;
     27    }
    2328}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/ApiRequestor.php

    r1885455 r2873721  
    11<?php
    22
    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;
     3class 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;
    2932
    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);
    3942
    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);
    99102
    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        }
    121125
    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    }
    124128}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/ApiResource.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3abstract 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    }
    500506}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Branch.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923
    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    }
    2429
    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    }
    2935
    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    }
    3441
    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    }
    3947
    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    }
    4453}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Category.php

    r1682753 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    2429}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Course.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923
    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    }
    2429
    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    }
    4959
    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    }
    5465
    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    }
    5971
    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    }
    6477}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Group.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923
    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    }
    2429
    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    }
    3947}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/SiteInfo.php

    r1682753 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/Unit.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923
    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    }
    2429}
  • talentlms/tags/7.0/TalentLMSLib/lib/TalentLMS/User.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    2022
    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    }
    2528
    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    }
    7082}
  • talentlms/tags/7.0/readme.txt

    r2828674 r2873721  
    55Tested up to: 6.1.1
    66Requires PHP: 5.2.4
    7 Stable tag: trunk
     7Stable tag: 7.0
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    5555
    5656== 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
    5764
    5865= 6.6.9.5 =
  • talentlms/tags/7.0/talentlms.php

    r2826498 r2873721  
    33 Plugin Name: TalentLMS
    44 Plugin URI: http://wordpress.org/extend/plugins/talentlms/
    5  Description: This plugin integrates Talentlms with Wordpress. Promote your TalentLMS content through your WordPress site.
    6  Version: 6.6.9.5
     5 Description: This plugin integrates TalentLMS with WordPress. Promote your TalentLMS content through your WordPress site.
     6 Version: 7.0
    77 Author: Epignosis LLC
    88 Author URI: www.epignosishq.com
     
    1010 */
    1111
    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 */
     15if (file_exists(plugin_dir_path(__FILE__) . 'vendor/autoload.php')) {
     16    require_once plugin_dir_path(__FILE__) . 'vendor/autoload.php';
     17}
    1518
    16 require_once (_TLMS_BASEPATH_ . '/TalentLMSLib/lib/TalentLMS.php');
     19/**
     20 * Define constants
     21 */
     22define('TLMS_BASEPATH', dirname(__FILE__));
     23define('TLMS_BASEURL', plugin_dir_url(__FILE__));
     24define('TLMS_VERSION', '7.0');
     25define('TLMS_UPLOAD_DIR', 'talentlmswpplugin');
     26/**
     27 * The code that runs during plugin activation
     28 */
     29function activate(): void
     30{
     31    TalentlmsIntegration\Activate::tlms_activate();
     32}
     33register_activation_hook(__FILE__, 'activate');
    1734
    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');
    2835register_uninstall_hook(__FILE__, 'tlms_uninstall');
    2936
    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');   
     37if (file_exists(TLMS_BASEPATH . '/TalentLMSLib/lib/TalentLMS.php')) {
     38    require_once TLMS_BASEPATH . '/TalentLMSLib/lib/TalentLMS.php';
     39}
     40
     41if (class_exists('TalentlmsIntegration\Plugin')) {
     42    TalentlmsIntegration\Plugin::init();
     43}
     44
     45function 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');
    3854    }
    3955}
    40 add_action( 'admin_init', 'tlms_isWoocommerceActive' );
     56add_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
    103
    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
    1210
    13 == Description ==
     11This 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
    1436
    1537[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.
     
    2042* [TalentLMS - Get started in 5'](https://www.talentlms.com/blog/talentlms-get-started-in-5/ "TalentLMS - Get started in 5'")
    2143
    22 ## Plugin Features ##
     44### Plugin Features
    2345
    2446* List your TalentLMS courses and their content in WordPress.
    2547* Integrate your TalentLMS courses as WooCommerce products
    2648
    27 == Installation ==
     49## Getting Started
    2850
    29 #To Install:#
     51### Installation
    3052
    31531. Download TalentLMS WordPress plugin
    32 1. Unzip the file into a folder on your hard drive
    33 1. Upload `/talentlms/` folder to the `/wp-content/plugins/` folder on your site
    34 1. Visit your WordPress _Administration -> Plugins_ and activate TalentLMS WordPress plugin
     542. Unzip the file into a folder on your hard drive
     553. Upload `/talentlms/` folder to the `/wp-content/plugins/` folder on your site
     564. Visit your WordPress _Administration -> Plugins_ and activate TalentLMS WordPress plugin
    3557
    3658Alternatively you can automatically install TalentLMS WordPress plugin from the  WordPress Plugin Directory.
    3759
    38 #Usage:#
     60## Usage
    3961
    4062* Once you have activated the plugin, provide your TalentLMS Domain name and TalentLMS API key.
     
    4567    * Insert TalentLMS widget in any registered sidebar of your site.
    4668
    47 == Frequently Asked Questions ==
     69## License
     70
     71Distributed under the [GPLv2 or later License](http://www.gnu.org/licenses/gpl-2.0.html). See `LICENSE.txt` for more information.
     72
     73## FAQ
    4874
    4975If you have a question or any feedback you want to share send us an email at [support@talentlms.com](mailto:support@talentlms.com 'support')
    5076
    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  
    11<?php
    22
    3 if(!function_exists('curl_init')){
    4     throw new Exception('TalentLMS API needs the CURL PHP extension.');
     3if (!function_exists('curl_init')) {
     4    throw new Exception('TalentLMS API needs the CURL PHP extension.');
    55}
    66
    7 if(!function_exists('json_decode')){
    8     throw new Exception('TalentLMS API needs the JSON PHP extension.');
     7if (!function_exists('json_decode')) {
     8    throw new Exception('TalentLMS API needs the JSON PHP extension.');
    99}
    1010
    11 abstract class TalentLMS{
    12     public static $apiKey;
    13     public static $domain;
    14     public static $apiBase;
    15     public static $apiProtocol;
     11abstract class TalentLMS
     12{
     13    public static $apiKey;
     14    public static $domain;
     15    public static $apiBase;
     16    public static $apiProtocol;
    1617
    17     const VERSION = '1.0';
    18     const PREFIX = 'WpPlugin';
     18    const VERSION = '1.0';
     19    const PREFIX = 'WpPlugin';
    1920
    20     public static function getApiKey(){
    21         return self::$apiKey;
    22     }
     21    public static function getApiKey()
     22    {
     23        return self::$apiKey;
     24    }
    2325
    24     public static function setApiKey($apiKey){
    25         self::$apiKey = $apiKey;
    26     }
     26    public static function setApiKey($apiKey)
     27    {
     28        self::$apiKey = $apiKey;
     29    }
    2730
    28     public static function getDomain(){
    29         return self::$domain;
    30     }
     31    public static function getDomain()
     32    {
     33        return self::$domain;
     34    }
    3135
    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    }
    3742
    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;
    4450
    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        }
    4854
    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    }
    5967}
    6068
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/ApiError.php

    r1682753 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1113
    12     public function getHttpStatus(){
    13         return $this->http_status;
    14     }
     14    public function getHttpStatus()
     15    {
     16        return $this->http_status;
     17    }
    1518
    16     public function getHttpBody(){
    17         return $this->http_body;
    18     }
     19    public function getHttpBody()
     20    {
     21        return $this->http_body;
     22    }
    1923
    20     public function getJsonBody(){
    21         return $this->json_body;
    22     }
     24    public function getJsonBody()
     25    {
     26        return $this->json_body;
     27    }
    2328}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/ApiRequestor.php

    r1885455 r2873721  
    11<?php
    22
    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;
     3class 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;
    2932
    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);
    3942
    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);
    99102
    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        }
    121125
    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    }
    124128}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/ApiResource.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3abstract 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    }
    500506}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/Branch.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923
    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    }
    2429
    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    }
    2935
    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    }
    3441
    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    }
    3947
    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    }
    4453}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/Category.php

    r1682753 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    2429}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/Course.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923
    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    }
    2429
    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    }
    4959
    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    }
    5465
    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    }
    5971
    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    }
    6477}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/Group.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923
    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    }
    2429
    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    }
    3947}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/SiteInfo.php

    r1682753 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/Unit.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    1923
    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    }
    2429}
  • talentlms/trunk/TalentLMSLib/lib/TalentLMS/User.php

    r2750739 r2873721  
    11<?php
    22
    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     }
     3class 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    }
    2022
    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    }
    2528
    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    }
    7082}
  • talentlms/trunk/readme.txt

    r2828674 r2873721  
    55Tested up to: 6.1.1
    66Requires PHP: 5.2.4
    7 Stable tag: trunk
     7Stable tag: 7.0
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    5555
    5656== 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
    5764
    5865= 6.6.9.5 =
  • talentlms/trunk/talentlms.php

    r2826498 r2873721  
    33 Plugin Name: TalentLMS
    44 Plugin URI: http://wordpress.org/extend/plugins/talentlms/
    5  Description: This plugin integrates Talentlms with Wordpress. Promote your TalentLMS content through your WordPress site.
    6  Version: 6.6.9.5
     5 Description: This plugin integrates TalentLMS with WordPress. Promote your TalentLMS content through your WordPress site.
     6 Version: 7.0
    77 Author: Epignosis LLC
    88 Author URI: www.epignosishq.com
     
    1010 */
    1111
    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 */
     15if (file_exists(plugin_dir_path(__FILE__) . 'vendor/autoload.php')) {
     16    require_once plugin_dir_path(__FILE__) . 'vendor/autoload.php';
     17}
    1518
    16 require_once (_TLMS_BASEPATH_ . '/TalentLMSLib/lib/TalentLMS.php');
     19/**
     20 * Define constants
     21 */
     22define('TLMS_BASEPATH', dirname(__FILE__));
     23define('TLMS_BASEURL', plugin_dir_url(__FILE__));
     24define('TLMS_VERSION', '7.0');
     25define('TLMS_UPLOAD_DIR', 'talentlmswpplugin');
     26/**
     27 * The code that runs during plugin activation
     28 */
     29function activate(): void
     30{
     31    TalentlmsIntegration\Activate::tlms_activate();
     32}
     33register_activation_hook(__FILE__, 'activate');
    1734
    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');
    2835register_uninstall_hook(__FILE__, 'tlms_uninstall');
    2936
    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');   
     37if (file_exists(TLMS_BASEPATH . '/TalentLMSLib/lib/TalentLMS.php')) {
     38    require_once TLMS_BASEPATH . '/TalentLMSLib/lib/TalentLMS.php';
     39}
     40
     41if (class_exists('TalentlmsIntegration\Plugin')) {
     42    TalentlmsIntegration\Plugin::init();
     43}
     44
     45function 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');
    3854    }
    3955}
    40 add_action( 'admin_init', 'tlms_isWoocommerceActive' );
     56add_action('admin_init', 'tlms_isWoocommerceActive');
Note: See TracChangeset for help on using the changeset viewer.