/**
 * Callback for creating the plugin header.
 *
 * @param unknown $args
 */
function ibm_sbtk_header($args = array())
{
    $settings = new SBTSettings();
    $store = SBTCredentialStore::getInstance();
    $endpoints = $settings->getEndpoints();
    if ($endpoints == null || empty($endpoints)) {
        return;
    }
    foreach ($endpoints as $endpoint) {
        if (($settings->getAuthenticationMethod($endpoint['name']) == 'oauth1' || $settings->getAuthenticationMethod($endpoint['name']) == 'oauth2') && $store->getOAuthAccessToken($endpoint['name']) == null && (!isset($_COOKIE['IBMSBTKOAuthLogin']) || $_COOKIE['IBMSBTKOAuthLogin'] != 'yes')) {
            $deploy_url = $settings->getSDKDeployURL($endpoint['name']);
            $authentication_method = $settings->getAuthenticationMethod($endpoint['name']);
            $js_library = $settings->getJSLibrary($endpoint['name']);
            $url = $settings->getURL($endpoint['name']);
            $name = $settings->getName($endpoint['name']);
            $api_version = $settings->getAPIVersion($endpoint['name']);
            $type = $settings->getServerType($endpoint['name']);
            $allow_client_access = $settings->allowClientAccess($endpoint['name']);
            $endpoints = $settings->getEndpoints();
            // Load the header view
            require BASE_PATH . '/views/includes/header.php';
            return;
        }
    }
    $plugin = new SBTPlugin($endpoints[0]['name']);
    $plugin->createHeader();
}
Пример #2
0
 /**
  * Returns the block contents.
  * 
  * @return stdClass		Block content.
  */
 public function get_content()
 {
     if ($this->content !== null) {
         return $this->content;
     }
     $this->content = new stdClass();
     if (!isset($this->config->plugin) || $this->config->plugin == '') {
         return $this->content;
     }
     if (isset($this->config->plugin)) {
         ob_start();
         // Load dependencies
         if (!defined('BASE_LOCATION')) {
             $autoload = __DIR__ . '/core/autoload.php';
             include $autoload;
         }
         $this->loadModel('SBTSettings');
         $this->loadModel('SBTCredentialStore');
         $settings = new SBTSettings();
         $store = SBTCredentialStore::getInstance();
         global $CFG;
         global $USER;
         $blockPath = $CFG->dirroot . '/blocks/ibmsbt/';
         // Our default assumption is that user supplies incorrect credentials; only if
         // the test request shows a 401 do we change this flag
         $incorrectCredentials = false;
         // If the user clicked "login", then trigger the OAuth dance
         if (isset($_COOKIE['IBMSBTKOAuthLogin']) && $_COOKIE['IBMSBTKOAuthLogin'] == 'yes' && $store->getOAuthAccessToken($this->config->endpoint) == null) {
             if ($settings->getAuthenticationMethod($this->config->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->config->endpoint) == 'oauth2') {
                 $store->deleteOAuthCredentials($this->config->endpoint);
                 $this->_startOAuthDance($settings);
                 $this->content->text = ob_get_clean();
                 return;
             }
         }
         // Check if token expired. If yes, clear the credential store and load login display
         if (($settings->getAuthenticationMethod($this->config->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->config->endpoint) == 'oauth2') && $store->getOAuthAccessToken($this->config->endpoint) != null) {
             $endpoint = null;
             if ($settings->getAuthenticationMethod($this->config->endpoint) == "oauth2") {
                 $endpoint = new SBTOAuth2Endpoint();
             } else {
                 if ($settings->getAuthenticationMethod($this->config->endpoint) == "oauth1") {
                     $endpoint = new SBTOAuth1Endpoint();
                 }
             }
             $service = '/files/basic/api/myuserlibrary/feed';
             $response = $endpoint->makeRequest($settings->getURL($this->config->endpoint), $service, 'GET', array(), null, null, $this->config->endpoint);
             if (is_string($response)) {
                 echo response;
                 $this->content->text = ob_get_clean();
                 return;
             } else {
                 if ($response->getStatusCode() == 401) {
                     // Delete old credentials.
                     $store->deleteOAuthCredentials($this->config->endpoint);
                 }
             }
         } else {
             $endpoint = new SBTBasicAuthEndpoint();
             $service = '/files/basic/api/myuserlibrary/feed';
             $response = $endpoint->makeRequest($settings->getURL($this->config->endpoint), $service, 'GET', array(), null, null, $this->config->endpoint);
             if ($response->getStatusCode() == 401) {
                 // Delete old credentials.
                 $store->deleteBasicAuthCredentials($this->config->endpoint);
                 if ($store->getBasicAuthPassword($this->config->endpoint) != null) {
                     $incorrectCredentials = true;
                 }
             }
         }
         echo '<div name="ibm_sbtk_widget">';
         if (($settings->getAuthenticationMethod($this->config->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->config->endpoint) == 'oauth2') && $store->getOAuthAccessToken($this->config->endpoint) == null && (!isset($_COOKIE['IBMSBTKOAuthLogin']) || $_COOKIE['IBMSBTKOAuthLogin'] != 'yes')) {
             if (isloggedin() === false || !isset($USER->id) || $USER->id === null) {
                 if (!$incorrectCredentials) {
                     print get_string('please_login', 'block_ibmsbt');
                 } else {
                     print get_string('incorrect_credentials', 'block_ibmsbt');
                 }
             } else {
                 require $blockPath . '/core/views/oauth-login-display.php';
             }
             echo '</div>';
             $this->content->text = ob_get_clean();
             return;
         }
         $plugin = new SBTPlugin($this->config->endpoint);
         $plugin->createHeader();
         if ($settings->getAuthenticationMethod($this->config->endpoint) == 'basic' && $store->getBasicAuthUsername($this->config->endpoint) != null && $store->getBasicAuthPassword($this->config->endpoint) != null || $settings->getAuthenticationMethod($this->config->endpoint) == 'oauth1' && $store->getRequestToken($this->config->endpoint) != null || $settings->getAuthenticationMethod($this->config->endpoint) == 'basic' && $settings->getBasicAuthMethod($this->config->endpoint) == 'global' || $settings->getAuthenticationMethod($this->config->endpoint) == 'oauth2' && $store->getOAuthAccessToken($this->config->endpoint) != null) {
             if (isloggedin()) {
                 if (IBM_SBT_CRYPTO_ENABLED === false && IBM_SBT_DEMO_MODE === false) {
                     echo '<strong style="color: red;">WARNING: Your data is not encrypted. Please install php-mcrypt to secure your data.</strong><br/>';
                 }
                 require $this->config->plugin;
             }
             if ($settings->getAuthenticationMethod($this->config->endpoint) == 'basic') {
                 // 					require $blockPath . '/core/views/endpoint-logout.php'; // Uncomment to show logout button
                 // 					echo '<button onclick="ibm_sbt_endpoint_logout()">Logout from this Endpoint</button>'; // Uncomment to show logout button
             }
         }
         if ($settings->getAuthenticationMethod($this->config->endpoint) == 'basic' && ($settings->getBasicAuthMethod($this->config->endpoint) == 'prompt' || $settings->getBasicAuthMethod($this->config->endpoint) == 'profile') && $store->getBasicAuthUsername($this->config->endpoint) == null) {
             if (!isloggedin()) {
                 print get_string('please_login', 'block_ibmsbt');
                 echo '</div>';
                 $this->content->text = ob_get_clean();
                 return $this->content;
             } else {
                 require $blockPath . '/core/views/basic-auth-login-display.php';
             }
         } else {
             if ($settings->getAuthenticationMethod($this->config->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->config->endpoint) == 'oauth2') {
                 // 			require_once BASE_PATH . '/views/oauth-logout-display.php'; TODO: Uncomment when OAuth logout has been fixed
             }
         }
         if (($settings->getAuthenticationMethod($this->config->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->config->endpoint) == 'oauth2') && $store->getOAuthAccessToken($this->config->endpoint) != null) {
             // require $blockPath . '/core/views/endpoint-logout.php'; Uncomment to show logout button
             // echo '<button onclick="ibm_sbt_endpoint_logout()">Logout from this Endpoint</button>'; Uncomment to show logout button
         }
         echo '</div>';
         if (!isloggedin()) {
             print get_string('please_login', 'block_ibmsbt');
         }
         $this->content->text = ob_get_clean();
     } else {
         $this->content->text = get_string('please_login', 'block_ibmsbt');
     }
     return $this->content;
 }