require_once '../../../wp-load.php'; } require_once ABSPATH . 'wp-admin/includes/admin.php'; require_once SCORMCLOUD_BASE . 'scormcloudplugin.php'; require_once SCORMCLOUD_BASE . 'db/scormclouddatabase.php'; global $wpdb; $ScormService = ScormCloudPlugin::get_cloud_service(); try { $isValidAccount = $ScormService->isValidAccount(); } catch (Exception $e) { $isValidAccount = false; } if (isset($_GET['inviteid'])) { include 'trainingdetails.php'; } else { $regsRemaining = ScormCloudPlugin::remaining_registrations(); ?> <div class="scormcloud-admin-page trainings"> <h2><?php _e("SCORM Cloud Training", "scormcloud"); ?> </h2> <?php if ($isValidAccount) { if ($regsRemaining < 1) { echo "<div>\n <h3>" . __("The maximum number of registrations for this account has been reached. Visit the <a href='https://cloud.scorm.com'>SCORM Cloud site</a> to upgrade your account.", "scormcloud") . "</h3>\n </div>"; } else { ?>
/** * Displays the Widget * */ function widget($args, $instance) { extract($args); $title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title']); $requireLogin = isset($instance['requirelogin']) ? (bool) $instance['requirelogin'] : true; $regsRemaining = ScormCloudPlugin::remaining_registrations(); # Before the widget echo $before_widget; # The title if ($title) { echo $before_title . $title . $after_title; } # Make the widget echo '<link rel="stylesheet" type="text/css" href="' . get_option('siteurl') . '/wp-content/plugins/scormcloud/css/scormcloud.widget.css" />'; //echo '<h2>SCORM Cloud Courses</h2>'; global $current_user; global $wpdb; get_currentuserinfo(); $coursesFilter = ScormCloudPlugin::is_network_managed() && get_site_option('scormcloud_sharecourses') !== '1' ? $GLOBALS['blog_id'] . "-.*" : null; $ScormService = ScormCloudPlugin::get_cloud_service(); $courseService = $ScormService->getCourseService(); $courseObjArray = $courseService->GetCourseList($coursesFilter); if ($requireLogin && !is_user_logged_in()) { echo '<a href="wp-login.php">Log in</a> to see the course catalog.'; } else { $regService = $ScormService->getRegistrationService(); //echo count($regs); echo '<div class="courselistDiv">'; echo "<div class='helpMsg'>" . __("Click course title to launch.", "scormcloud") . " <br/><a class='catalogMoreInfo toggleButton' href='javascript:void(0);' toggleobject='.courselistDiv .catalog.moreInfo' onText='" . __("hide info", "scormcloud") . "' offText='" . __("more info", "scormcloud") . "'>" . __("more info", "scormcloud") . "</a></div>"; echo "<div class='catalog moreInfo'>"; if ($current_user->user_login != '') { echo "<p>" . __("If you have taken a course before, your most recent results will display by clicking 'show details' and your most recent training will launch by clicking the course title.", "scormcloud") . "</p>"; } else { echo "<p>" . __("To launch a course, you must provide a name and email address. This will allow your training results to be tracked.", "scormcloud") . "</p>"; echo "<p>" . __("By registering or logging in, your results will be associated with your user identity and you will be able to see your training results in this widget.", "scormcloud") . "</p>"; } echo "</div>"; foreach ($courseObjArray as $course) { $courseId = $course->getCourseId(); $courseTitle = $course->getTitle(); if (isset($current_user->user_login) && $current_user->user_login != '') { $invTable = ScormCloudDatabase::get_invitations_table(); $regTable = ScormCloudDatabase::get_registrations_table(); $query = $wpdb->prepare('SELECT reg.reg_id, inv.course_title, inv.course_id, inv.active, reg.update_date FROM ' . $regTable . ' reg JOIN ' . $invTable . ' inv ON reg.invite_id = inv.invite_id WHERE reg.user_id = %s AND inv.course_id = %s ORDER BY reg.update_date DESC', array($current_user->ID, $courseId)); $reg = $wpdb->get_row($query, OBJECT); if ($reg != null) { $regId = $reg->reg_id; $regResultsXmlStr = $regService->GetRegistrationResult($regId, 0, 0); $resXml = simplexml_load_string($regResultsXmlStr); $completion = $resXml->registrationreport->complete; $success = $resXml->registrationreport->success; $seconds = $resXml->registrationreport->totaltime; $score = $resXml->registrationreport->score; echo "<div class='usercourseblock'>"; if ($reg->active == 1) { echo "<a class='courseTitle' href='javascript:void(0);' key='{$regId}' onclick='ScormCloud.Widget.getLaunchURL(\"{$regId}\",\"Catalog\");' url='" . get_option('siteurl') . "/wp-content/plugins/scormcloud/ajax.php' title='" . __("Click to launch course ", "scormcloud") . "{$courseTitle}'>{$courseTitle}</a>"; } else { echo "<span class='courseTitle' title='" . __("This course is currently inactive.", "scormcloud") . "'>{$courseTitle}</span>"; } echo "<br/><a href='javascript:void(0);' class='toggleButton showDetails' toggleobject='.courselistDiv .catalog.courseDetails.{$regId}' onText='" . __("hide details", "scormcloud") . "' offText='" . __("show details", "scormcloud") . "'>" . __("show details", "scormcloud") . "</a>"; echo "<div class='catalog courseDetails {$regId}' >"; if ($seconds > 0) { echo "<div class=''>" . __("Completion", "scormcloud") . ": <span class='{$completion}'>" . __($completion) . "</span></div>"; echo "<div class=''>" . __("Success", "scormcloud") . ": <span class='{$success}'>" . __($success) . "</span></div>"; echo "<div class=''>" . __("Score", "scormcloud") . ": " . ($score == "unknown" ? "-" : $score . "%") . "</div>"; echo '<div class="time">' . floor($seconds / 60) . "min " . $seconds % 60 . __("sec spent in course", "scormcloud") . '</div>'; } else { echo '<div class="">' . __("Not Started", "scormcloud") . '</div>'; } echo "</div>"; } else { echo "<div class='usercourseblock'>"; if ($regsRemaining > 0) { echo "<a class='courseTitle' href='javascript:void(0);' coursetitle='{$courseTitle}' key='{$courseId}' onclick='ScormCloud.Widget.getCatalogLaunchURL(\"{$courseId}\");' url='" . get_option('siteurl') . "/wp-content/plugins/scormcloud/ajax.php' title='" . __("Click to launch course ", "scormcloud") . "{$courseTitle}'>{$courseTitle}</a>"; } else { echo "<span class='courseTitle' title='" . __("This course is currently inactive.", "scormcloud") . "'>{$courseTitle}</span>"; } } } else { echo "<div class='usercourseblock'>"; if ($regsRemaining > 0) { echo "<a class='courseTitle anonLaunch' href='javascript:void(0);' key='{$courseId}' title='" . __("Click to launch course", "scormcloud") . " {$courseTitle}'>{$courseTitle}</a>"; echo "<div class='anonlaunchdiv' key='{$courseId}'>" . __("First Name", "scormcloud") . ":<br/><input name='scormcloudfname' type='text' key='{$courseId}'/><br/>"; echo __("Last Name", "scormcloud") . ":<br/><input name='scormcloudlname' type='text' key='{$courseId}'/><br/>"; echo __("Email", "scormcloud") . ":<br/><input name='scormcloudemail' type='text' key='{$courseId}'/>"; echo "<input name='launch' type='button' class='catalogLaunchBtn' key='{$courseId}' coursetitle='{$courseTitle}' onclick='ScormCloud.Widget.getAnonCatalogLaunchURL(\"{$courseId}\");' url='" . get_option('siteurl') . "/wp-content/plugins/scormcloud/ajax.php' value='" . __("Start Training", "scormcloud") . "'/>"; echo "<div class='launchMessage'>message</div></div>"; } else { echo "<span class='courseTitle' title='" . __("This course is currently inactive.", "scormcloud") . "'>{$courseTitle}</span>"; } } echo "</div>"; } echo '</div>'; //echo '<script language="javascript">'.$widgetscript.'</script>'; echo '<script language="javascript" src="' . get_option('siteurl') . '/wp-content/plugins/scormcloud/scripts/scormcloud.widget.js" >' . '</script>'; } # After the widget echo $after_widget; }
public static function make_blog_entry($content) { global $wpdb; preg_match_all('/\\[scormcloud.training:.*?\\]/', $content, $cloudTagArray); $cloudTags = $cloudTagArray[0]; foreach ($cloudTags as $tagString) { $ScormService = ScormCloudPlugin::get_cloud_service(); try { $isValidAccount = $ScormService->isValidAccount(); } catch (Exception $e) { $isValidAccount = false; } $inviteId = substr($tagString, 21, strlen($tagString) - 22); $invite = ScormCloudDatabase::get_invitation($inviteId); if ($invite == null) { $content = str_replace($tagString, '', $content); } $inviteHtml = "<div class='scormCloudInvitation' key='{$inviteId}'>"; $inviteHtml .= "<h3>" . stripcslashes($invite->header) . "</h3>"; $inviteHtml .= "<p class='description'>" . stripcslashes($invite->description) . "</p>"; $courseService = $ScormService->getCourseService(); if (!$courseService->Exists($invite->course_id)) { $inviteHtml .= "<h3>" . __("This training is not currently available.", "scormcloud") . "</h3>"; } else { if ($invite->show_course_info == 1) { //get course info $inviteHtml .= "<div class='courseInfo'>"; if ($isValidAccount) { $courseMDXmlStr = $courseService->GetMetadata($invite->course_id, 0, 0, 0); //$inviteHtml .= $courseMDXmlStr; $courseMDXml = simplexml_load_string($courseMDXmlStr); //,"SimpleXMLElement",LIBXML_NOCDATA); $metadata = $courseMDXml->package->metadata; } $inviteHtml .= "<div class='title'>Title: " . $invite->course_title . "</div>"; if ($isValidAccount && $metadata != null) { $inviteHtml .= "<div class='desc'>" . $metadata->description . "</div>"; //assuming seconds coming back for now $duration = (int) $metadata->duration / 100; if ($duration > 0) { $inviteHtml .= "<div class='duration'>Duration: " . floor($duration / 60) . "min " . $duration % 60 . "sec </div>"; } } $inviteHtml .= "</div>"; } if (!$isValidAccount || $invite->active != 1) { $inviteHtml .= "<h3>" . __("This training is not currently active.", "scormcloud") . "</h3>"; } else { $regsRemaining = ScormCloudPlugin::remaining_registrations(); global $current_user; global $wpdb; get_currentuserinfo(); //if not logged in if (!isset($current_user->user_login) || $current_user->user_login == '') { if ($regsRemaining > 0) { if ($invite->require_login == 0) { $inviteHtml .= "<p class='inputs'>My name is <input name='scormcloudfname' placeholder='First Name' type='text' key='{$inviteId}'/> <input name='scormcloudlname' placeholder='Last Name' type='text' key='{$inviteId}'/>"; $inviteHtml .= " and my email is <input name='scormcloudemail' placeholder='Email' type='text' key='{$inviteId}'/> .</p>"; $inviteHtml .= "<input name='launch' type='button' key='{$inviteId}' onclick='ScormCloud.Post.makeAnonRegLaunch(\"{$inviteId}\");' url='" . get_option('siteurl') . "/wp-content/plugins/scormcloud/ajax.php' value='Start Training'/>"; } else { $inviteHtml .= "<h3>" . __("Please log in to take this training.", "scormcloud") . "</h3>"; } } else { $inviteHtml .= "<h3>" . __("This training is not currently active.", "scormcloud") . "</h3>"; } } else { $userId = $current_user->ID; $query = $wpdb->prepare('SELECT reg_id FROM ' . ScormCloudDatabase::get_registrations_table() . ' WHERE invite_id = %s AND user_id = %s ORDER BY update_date DESC', array($inviteId, $userId)); $reg = $wpdb->get_row($query, OBJECT); if ($reg != null) { $regId = $reg->reg_id; $regService = $ScormService->getRegistrationService(); $regResultsXmlStr = $regService->GetRegistrationResult($regId, 0, 0); $resXml = simplexml_load_string($regResultsXmlStr); $completion = $resXml->registrationreport->complete; $success = $resXml->registrationreport->success; $seconds = $resXml->registrationreport->totaltime; $score = $resXml->registrationreport->score; $inviteHtml .= "<table class='result_table'><tr>" . "<td class='head'>" . __("Completion", "scormcloud") . "</td>" . "<td class='head'>" . __("Success", "scormcloud") . "</td>" . "<td class='head'>" . __("Score", "scormcloud") . "</td>" . "<td class='head'>" . __("Total Time", "scormcloud") . "</td>" . "</tr><tr>" . "<td class='{$completion}'>" . $completion . "</td>" . "<td class='{$success}'>" . $success . "</td>" . "<td class='" . ($score == "unknown" ? __("unknown") : "") . "'>" . ($score == "unknown" ? "-" : $score . "%") . "</td>" . "<td class='time'>" . floor($seconds / 60) . "min " . $seconds % 60 . __('sec spent in course', "scormcloud") . "</td>" . "</tr></table>"; $inviteHtml .= "<input name='launch' type='button' key='{$inviteId}' onclick='ScormCloud.Post.getLaunchURL(\"{$inviteId}\",\"{$regId}\");' url='" . get_option('siteurl') . "/wp-content/plugins/scormcloud/ajax.php' value='" . __('Relaunch Training', 'scormcloud') . "' />"; } else { if ($regsRemaining > 0) { $inviteHtml .= "<input name='launch' type='button' key='{$inviteId}' onclick='ScormCloud.Post.makeUserRegLaunch(\"{$inviteId}\");' url='" . get_option('siteurl') . "/wp-content/plugins/scormcloud/ajax.php' value='Start Training'/>"; } else { $inviteHtml .= "<h3>" . __("This training is not currently active.", "scormcloud") . "</h3>"; } } } } } $inviteHtml .= "<div class='inviteMessage'>message</div>"; //$inviteHtml .= "<div class='serviceCredit'>Delivery via <a href='http://www.scorm.com/scorm-solved/scorm-cloud/'>SCORM Cloud</a></div>"; $inviteHtml .= "</div>"; $content = str_replace($tagString, $inviteHtml, $content); } preg_match_all('/\\[scormcloud.reportage:.*?\\]/', $content, $cloudRepArray); $cloudReportageLinks = $cloudRepArray[0]; foreach ($cloudReportageLinks as $tagString) { $ScormService = ScormCloudPlugin::get_cloud_service(); try { $isValidAccount = $ScormService->isValidAccount(); } catch (Exception $e) { $isValidAccount = false; } if ($isValidAccount) { $linkText = substr($tagString, 22, strlen($tagString) - 23); $rptService = $ScormService->getReportingService(); $rServiceUrl = $rptService->GetReportageServiceUrl(); $rptAuth = $rptService->GetReportageAuth('FREENAV', true); $reportageUrl = $rServiceUrl . 'Reportage/reportage.php?appId=' . $ScormService->getAppId() . "®istrationTags=" . $GLOBALS['blog_id'] . "|_all"; $repHtml = '<a id="ReportageLink" href="' . $rptService->GetReportUrl($rptAuth, $reportageUrl) . '" title="' . __("Open the SCORM Reportage Console in a new window.", "scormcloud") . '">' . $linkText . '</a>'; $content = str_replace($tagString, $repHtml, $content); } } return $content; //return $content; }