function link()
 {
     require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php";
     $loader = new Psr4AutoloaderClass();
     $loader->register();
     $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src");
     $url = get_post_meta($_POST['course_post'], "courseURL", true);
     $token = get_post_meta($_POST['course_post'], "courseToken", true);
     $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => $url, "token" => $token, "webService" => "CURL"));
     $post = get_post($_POST['page_id']);
     $publish = "true";
     if ($post->post_status != "publish") {
         $publish = "false";
     }
     $pages = new InstructureCanvasAPI\Courses\Pages\Pages();
     $pages->setAPI($API);
     $pages->setCourseID($_POST['course']);
     $data = $pages->createPage($_POST['title'], array("wiki_page[body]" => stripslashes($_POST['content']), "wiki_page[title]" => $_POST['title'], "wiki_page[published]" => $publish, "wiki_page[editing_roles]" => "teachers"));
     update_post_meta($post->ID, "CanvasLinked", true);
     update_post_meta($post->ID, "CanvasCourse", $_POST['course']);
     update_post_meta($post->ID, "postCanvasID", $data->content->page_id);
     update_post_meta($post->ID, "postURL", $data->content->url);
     update_post_meta($post->ID, "postHTMLURL", $data->content->html_url);
     $modules = new InstructureCanvasAPI\Courses\Modules\Modules();
     $modules->setAPI($API);
     $modules->setCourseID($_POST['course']);
     $data = $modules->addModuleItem($_POST['module'], array("module_item[title]" => $_POST['title'], "module_item[type]" => "Page", "module_item[page_url]" => $data->content->url, "module_item[position]" => $_POST['place'], "module_item[content_id]" => $data->content->page_id, "module_item[indent]" => $_POST['indent']));
     $this->new_form($_POST['page_id'], $data->content->html_url);
     die;
 }
 function check_pages()
 {
     if (wp_verify_nonce($_POST['nonce'], "molie_admin_check")) {
         require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php";
         $loader = new Psr4AutoloaderClass();
         $loader->register();
         $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src");
         $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($_POST['course'], "courseURL", true), "token" => get_post_meta($_POST['course'], "courseToken", true), "webService" => "CURL"));
         $pages = new InstructureCanvasAPI\Courses\Pages\Pages();
         $pages->setAPI($API);
         $pages->setCourseID(get_post_meta($_POST['course'], "courseID", true));
         $data = $pages->getPages();
         $diff = false;
         $pages_diff = array();
         foreach ($data->content as $item) {
             global $wpdb;
             $data = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key ='postHTMLURL' and meta_value = '" . $item->html_url . "'");
             if (count($data) == 0) {
                 $diff = true;
                 array_push($pages_diff, $item);
             }
         }
         if ($diff) {
             echo json_encode(array($diff, $pages_diff));
         } else {
             echo json_encode(array($diff, $pages_diff));
         }
     } else {
         echo "Nonce failed";
     }
     wp_die();
 }
 function download()
 {
     $course_id = get_post_meta($_POST['page_id'], "CanvasCourse", true);
     global $wpdb;
     $course_post = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key='CourseID' and meta_value = '" . $course_id . "'");
     $course_post = get_post($course_post[0]->post_id);
     require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php";
     $loader = new Psr4AutoloaderClass();
     $loader->register();
     $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src");
     $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($course_post->ID, "courseURL", true), "token" => get_post_meta($course_post->ID, "courseToken", true), "webService" => "CURL"));
     $pages = new InstructureCanvasAPI\Courses\Pages\Pages();
     $pages->setAPI($API);
     $pages->setCourseID(get_post_meta($course_post->ID, "courseID", true));
     $data = $pages->getPage(get_post_meta($_POST['page_id'], "postURL", true));
     $new_content = $data->content->body;
     //print_r($new_content);
     //print_r($_POST);
     $update = $wpdb->update($wpdb->prefix . "posts", array("post_content" => $new_content), array("ID" => $_POST['page_id']));
     if ($update === false) {
         print_r($wpdb);
         echo json_encode(array("error"));
     } else {
         echo json_encode(array($new_content));
     }
     die;
 }
 private function get_post_content($post, $pageURL)
 {
     require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php";
     $loader = new Psr4AutoloaderClass();
     $loader->register();
     $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src");
     $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($post->ID, "courseURL", true), "token" => get_post_meta($post->ID, "courseToken", true), "webService" => "CURL"));
     $pages = new InstructureCanvasAPI\Courses\Pages\Pages();
     $pages->setAPI($API);
     $pages->setCourseID(get_post_meta($post->ID, "courseID", true));
     $data = $pages->getPage($pageURL);
     return $data;
 }
 function remove($post_id)
 {
     $post = get_post($post_id);
     $course_id = get_post_meta($post_id, "CanvasCourse", true);
     global $wpdb;
     $course_post = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key='CourseID' and meta_value = '" . $course_id . "'");
     $course_post = get_post($course_post[0]->post_id);
     require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php";
     $loader = new Psr4AutoloaderClass();
     $loader->register();
     $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src");
     $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($course_post->ID, "courseURL", true), "token" => get_post_meta($course_post->ID, "courseToken", true), "webService" => "CURL"));
     $pages = new InstructureCanvasAPI\Courses\Pages\Pages();
     $pages->setAPI($API);
     $pages->setCourseID($course_id);
     $data = $pages->deletePage(get_post_meta($post_id, "postURL", true));
     delete_post_meta($post_id, "CanvasCourse");
     delete_post_meta($post_id, "postCanvasID");
     delete_post_meta($post_id, "postURL");
     delete_post_meta($post_id, "postHTMLURL");
 }
 function link_post($post_id)
 {
     if (count($_POST) != 0 && isset($_POST['_wp_http_referer'])) {
         $linked = get_post_meta($post_id, "CanvasLinked", true);
         if ($linked == 1) {
             $this->post = $post_id;
             $post = get_post($this->post);
             $this->content = $post->post_content;
             $this->change_src();
             $this->change_links();
             $strip = explode("body>", $this->content);
             $this->content = substr($strip[1], 0, strlen($strip[1]) - 2);
             $styles = $this->stylesheets($post);
             require_once dirname(__FILE__) . "/../lib/emogrifier.php";
             foreach ($styles as $style) {
                 if (strpos($style, network_site_url()) !== FALSE) {
                     $dir = wp_upload_dir();
                     $style = str_replace(network_site_url() . "/wp-content/", str_replace("uploads", "", $dir['basedir']), $style);
                     $style = explode("?", $style);
                     $style = $style[0];
                 }
                 $css = preg_replace("/\\/[\\*]*[^\\*]*\\*\\//", "", file_get_contents($styles[1]));
                 $emogrifier = new emogrifier($this->content, $css);
                 $this->content = $emogrifier->emogrify();
             }
             $canvas_id = get_post_meta($post_id, "postCanvasID", true);
             $course_id = get_post_meta($post_id, "CanvasCourse", true);
             global $wpdb;
             $course_post = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key='CourseID' and meta_value = '" . $course_id . "'");
             $course_post = get_post($course_post[0]->post_id);
             require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php";
             $loader = new Psr4AutoloaderClass();
             $loader->register();
             $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src");
             $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($course_post->ID, "courseURL", true), "token" => get_post_meta($course_post->ID, "courseToken", true), "webService" => "CURL"));
             $pages = new InstructureCanvasAPI\Courses\Pages\Pages();
             $pages->setAPI($API);
             $pages->setCourseID(get_post_meta($course_post->ID, "courseID", true));
             $post = get_post($post_id);
             $publish = 1;
             if ($post->post_status != "publish") {
                 $publish = 0;
             }
             $data = $pages->updatePage($post->post_title, array("wiki_page[body]" => stripslashes(str_replace(" ", " ", $this->content)), "wiki_page[title]" => $post->post_title, "wiki_page[published]" => $publish));
         }
     }
 }
Example #7
0
    function choose()
    {
        if (isset($_POST['molie-link-nonce'])) {
            if (wp_verify_nonce($_POST['molie-link-nonce'], "molie-link")) {
                $course_details = explode("|", $_POST['molie_course']);
                $posts = get_posts(array("post_type" => 'linkedcanvascourse'));
                $post_insert = true;
                foreach ($posts as $post) {
                    if ($post->post_title == $course_details[1]) {
                        $post_insert = false;
                        $course = $post->ID;
                    }
                }
                if ($post_insert) {
                    $course = wp_insert_post(array("post_type" => 'linkedcanvascourse', "post_status" => 'publish', "post_title" => $course_details[1], "post_author" => get_current_user_id()));
                    update_post_meta($course, "courseID", $course_details[0], true);
                    update_post_meta($course, "courseToken", $_POST['token'], true);
                    update_post_meta($course, "courseURL", $_POST['url'], true);
                }
                $urls = get_user_meta(get_current_user_id(), "courseLinkURLsTokens", true);
                if (!is_array($urls)) {
                    $urls = array();
                }
                if (!isset($urls[$_POST['url']])) {
                    $urls[$_POST['url']] = array($_POST['token']);
                } else {
                    $insert = true;
                    foreach ($urls[$_POST['url']] as $token) {
                        if ($token == $_POST['token']) {
                            $insert = false;
                        }
                    }
                    if ($insert) {
                        $urls[$_POST['url']][] = $_POST['token'];
                    }
                }
                update_user_meta(get_current_user_id(), "courseLinkURLsTokens", $urls);
                require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php";
                $loader = new Psr4AutoloaderClass();
                $loader->register();
                $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src");
                $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => $_POST['url'], "token" => $_POST['token'], "webService" => "CURL"));
                $modules = new InstructureCanvasAPI\Courses\Modules\Modules();
                $modules->setAPI($API);
                $modules->setCourseID($course_details[0]);
                $data = $modules->getModules($course_details[0]);
                if ($data) {
                    if (count($data->content) != 0) {
                        $module_pages = array();
                        echo "<div id='molie_choose'>";
                        echo "<h2>" . __("Modules and Pages in this course") . "</h2>";
                        echo "<p>" . __("Select the pages you'd like to import") . "</p>";
                        echo "<div id='importProgress'><p><strong>" . __("Import Progress") . " <span id='importTotal'></span></strong></p><div id='importProgressBar'></div></div>";
                        echo '<form id="molie_choose_form" action="javascript:function connect(){return false;};">';
                        echo "<input type='submit' id='molie_choose_submit' value='" . __("Import pages") . "' />";
                        echo "<input type='submit' id='molie_choose_skip' value='" . __("Skip step") . "' />";
                        echo "<p><span><a href='javascript:molie_select_all()'>" . __("Select All") . "</a></span> <span><a href='javascript:molie_unselect_all()'>" . __("Unselect All") . "</a></span></p>";
                        echo "<p>" . __("Course syllabus") . "</p>";
                        echo "<ul>";
                        $link_info = "";
                        $link_checked = "";
                        if ($this->linked($course, "course_" . $course . "_course-syllabus")) {
                            $link_info = "<span class='pageLinked'>" . __("Page already linked - importing will override") . "</span>";
                            $link_checked = " override='true' ";
                        } else {
                            $link_checked = "checked";
                        }
                        echo "<li><input " . $link_checked . " course='" . $course . "' type='checkbox' id='course-syllabus'/>" . __("Course Syllabus") . " " . $link_info . "</li>";
                        echo "</ul>";
                        echo "<p>" . __("Course home page") . "</p>";
                        echo "<ul>";
                        $link_info = "";
                        $link_checked = "";
                        if ($this->linked($course, "course_" . $course . "_course-home-page")) {
                            $link_info = "<span class='pageLinked'>" . __("Page already linked - importing will override") . "</span>";
                            $link_checked = " override='true' ";
                        } else {
                            $link_checked = "checked";
                        }
                        echo "<li><input " . $link_checked . " course='" . $course . "' type='checkbox' id='course-home-page'/>" . __("Course Home Page") . " " . $link_info . "</li>";
                        echo "</ul>";
                        foreach ($data->content as $module) {
                            echo "<p>" . __("Module") . " : " . $module->name . "</p>";
                            echo "<ul>";
                            $moduleItems = $modules->getModuleItems($module->id);
                            foreach ($moduleItems->content as $item) {
                                $link_info = "";
                                $link_checked = "";
                                if ($this->linked($course, "course_" . $course . "_" . $item->page_url)) {
                                    $link_info = "<span class='pageLinked'>" . __("Page already linked - importing will override") . "</span>";
                                    $link_checked = " override='true' ";
                                } else {
                                    $link_checked = "checked";
                                }
                                array_push($module_pages, $item->page_url);
                                echo "<li><input " . $link_checked . " course='" . $course . "' module_name='" . addslashes($module->name) . "' module='" . $module->id . "' type='checkbox' id='" . $item->id . "'/>" . $item->title . " " . $link_info . "</li>";
                            }
                            echo "</ul>";
                        }
                        $pages = new InstructureCanvasAPI\Courses\Pages\Pages();
                        $pages->setAPI($API);
                        $pages->setCourseID($course_details[0]);
                        $data = $pages->getPages();
                        echo "<p>" . __("Pages outside modules") . "</p>";
                        echo "<ul>";
                        foreach ($data->content as $item) {
                            if ($item->front_page != 1) {
                                if (!in_array($item->url, $module_pages)) {
                                    $link_info = "";
                                    $link_checked = "";
                                    if ($this->linked($course, "course_" . $course . "_" . $item->url)) {
                                        $link_info = "<span class='pageLinked'>" . __("Page already linked - importing will override") . "</span>";
                                        $link_checked = " override='true' ";
                                    } else {
                                        $link_checked = "checked";
                                    }
                                    echo "<li><input " . $link_checked . " course='" . $course . "' type='checkbox' id='" . $item->url . "'/>" . $item->title . " " . $link_info . "</li>";
                                }
                            }
                        }
                        echo "</ul>";
                        echo "<input type='submit' id='molie_choose_submit' value='" . __("Import pages") . "' />";
                        echo "</form>";
                        echo "</div>";
                        echo "<div id='molie_files' style='display:none'>";
                        echo "<p>" . __("Page Linking complete") . "</p>";
                        ?>
<form method="post" action='<?php 
                        echo admin_url("admin.php?page=molie_files");
                        ?>
'><?php 
                        $nonce = wp_create_nonce("molie-files");
                        echo '<input type="hidden" name="molie-files-nonce" value="' . $nonce . '"/>';
                        echo "<input type='hidden' name='course_ID' value='" . $course . "' />";
                        echo "<p><input type='submit' value='" . __("Now, lets connect files") . "' /></p>";
                        echo "</div>";
                    }
                }
                $loader->unregister();
            } else {
                print_r($_POST);
                echo "nonce failed";
            }
        } else {
            $args = array("post_type" => "linkedcanvascourse", "post_status" => "publish");
            $courses = get_posts($args);
            if (count($courses) != 0) {
                echo "<h2>" . __("Choose a course") . "</h2>";
                $args = array("post_type" => "linkedcanvascourse", "post_status" => "publish");
                $courses = get_posts($args);
                if (count($courses) != 0) {
                    $nonce = wp_create_nonce("molie-link");
                    foreach ($courses as $course) {
                        ?>
<form method="post" action='<?php 
                        echo admin_url("admin.php?page=molie_choose");
                        ?>
'>
								<p><?php 
                        echo $course->post_title;
                        ?>
</p>
								<input type="hidden" name="molie-link-nonce" value="<?php 
                        echo $nonce;
                        ?>
"/>
								<input type="hidden" name="molie_course" value="<?php 
                        echo get_post_meta($course->ID, "courseID", true) . "|" . $course->post_title;
                        ?>
" />
								<input type="hidden" name="url" value="<?php 
                        echo get_post_meta($course->ID, "courseURL", true);
                        ?>
" />
								<input type="hidden" name="token" value="<?php 
                        echo get_post_meta($course->ID, "courseToken", true);
                        ?>
" />
								<input name="course" type="hidden" value="<?php 
                        echo get_post_meta($course->ID, "courseID", true);
                        ?>
" />
								<input type="submit" value="<?php 
                        echo __("Choose course pages");
                        ?>
" />
							</form>
						<?php 
                    }
                }
            }
        }
    }
    function pre()
    {
        global $post;
        if ($post->post_type == "post" && isset($_GET['action'])) {
            $linked = get_post_meta($post->ID, "CanvasLinked", true);
            if ($linked == 1) {
                $canvas_id = get_post_meta($post->ID, "postCanvasID", true);
                $course_id = get_post_meta($post->ID, "CanvasCourse", true);
                global $wpdb;
                $course_post = $wpdb->get_results("select post_id from " . $wpdb->prefix . "postmeta where meta_key='CourseID' and meta_value = '" . $course_id . "'");
                $course_post = get_post($course_post[0]->post_id);
                require_once __DIR__ . "/../../API/Psr4AutoloaderClass.php";
                $loader = new Psr4AutoloaderClass();
                $loader->register();
                $loader->addNamespace('InstructureCanvasAPI', __DIR__ . "/../../API/InstructureCanvasAPI/src");
                $API = new InstructureCanvasAPI\InstructureCanvasAPI(array("site" => get_post_meta($course_post->ID, "courseURL", true), "token" => get_post_meta($course_post->ID, "courseToken", true), "webService" => "CURL"));
                $pages = new InstructureCanvasAPI\Courses\Pages\Pages();
                $pages->setAPI($API);
                $pages->setCourseID(get_post_meta($course_post->ID, "courseID", true));
                $data = $pages->getPage(get_post_meta($post->ID, "postURL", true));
                $this->canvas = $data->content->body;
                $this->wp = $post->post_content;
                $this->prepare();
                $this->wp = explode("body>", $this->wp);
                $this->wp = substr($this->wp[1], 0, strlen($this->wp[1]) - 2);
                $this->canvas = explode("body>", $this->canvas);
                $this->canvas = substr($this->canvas[1], 0, strlen($this->canvas[1]) - 2);
                if ($this->compare()) {
                    ?>
<div id='canvassyncmessage' class="notice notice-success" style="border:1px solid #000">
							<p><?php 
                    echo __("This post is up to date on Canvas and WP");
                    ?>
 : <span class="molieoptions">(<?php 
                    echo __("Click for Options");
                    ?>
)</span></p>
							<div id="molielinkoptions">
								<p><a href="<?php 
                    echo get_post_meta($post->ID, "postHTMLURL", true);
                    ?>
"><?php 
                    echo __("See this page on Canvas");
                    ?>
</p>
								<p><a href="javascript:molie_update_post(<?php 
                    echo $post->ID;
                    ?>
,'<?php 
                    echo get_post_meta($post->ID, "postURL", true);
                    ?>
','upload');">Update Canvas with this page</a></p>
								<p><a href="javascript:molie_update_post(<?php 
                    echo $post->ID;
                    ?>
,'<?php 
                    echo get_post_meta($post->ID, "postURL", true);
                    ?>
','download');">Update this page with Canvas content</a></p>
							</div>
						</div>
						<?php 
                } else {
                    ?>
<div id='canvassyncmessage' class="notice notice-info" style="border:1px solid #000">
							<p><?php 
                    echo __("This post does not appear to be the same as the one it is linked to on Canvas");
                    ?>
 : <span class="molieoptions">(<?php 
                    echo __("Click for Options");
                    ?>
)</span></p>
							<div id="molielinkoptions">
								<p><a href="<?php 
                    echo get_post_meta($post->ID, "postHTMLURL", true);
                    ?>
"><?php 
                    echo __("See this page on Canvas");
                    ?>
</p>
								<p><a href="javascript:molie_update_post(<?php 
                    echo $post->ID;
                    ?>
,'<?php 
                    echo get_post_meta($post->ID, "postURL", true);
                    ?>
','upload');">Update Canvas with this page</a></p>
								<p><a href="javascript:molie_update_post(<?php 
                    echo $post->ID;
                    ?>
,'<?php 
                    echo get_post_meta($post->ID, "postURL", true);
                    ?>
','download');">Update this page with Canvas content</a></p>
							</div>
						</div>
						</div>
						<?php 
                }
            }
        }
    }