LearnPress – WordPress LMS Plugin - Version 2.1.2

Version Description

  • Fixed Assign course's items to user when assigning course
  • Fixed Options to change key 'lessons' and 'quizzes' when viewing a lesson/quiz in a course.
  • Fixed Course pagination issue in some case
  • Fixed Can not add to cart for non-loggedin user (woocommerce addon)
  • Fixed Broken cert when previewing to print in single course (Certificate)
  • Fixed Paid memberships show user as deleted after buying course (Paid membership)
  • Fixed overwrite templates issue (Paid membership)
  • Fixed "page isnt working" when creating a new post type (conflict with metabox in the-7 theme)
Download this release

Release Info

Developer tunnhn
Plugin Icon 128x128 LearnPress – WordPress LMS Plugin
Version 2.1.2
Comparing to
See all releases

Code changes from version 2.1.1 to 2.1.2

assets/css/admin/admin-compressed.css ADDED
@@ -0,0 +1 @@
 
1
+ .rwmb-field{margin:20px 0 20px 0;}.rwmb-field .rwmb-input .rwmb-label{margin-top:0;}.lp-nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding:9px 15px 0 0;line-height:inherit;}.learn-press-quick-add-page-inline{display:inline-block;vertical-align:top;margin:0 !important;}.learn-press-quick-add-page-inline > *{vertical-align:top;}.post-type-lp_course .column-price,.post-type-lp_course .column-students{width:10%;}.post-type-lp_course #course_curriculum .curriculum-section-items .lp-item-empty td.section-item-input{padding-left:40px;}.post-type-lp_course #course_curriculum .curriculum-section-items .lp-item-empty td.section-item-input.hover{padding-left:0;}.post-type-lp_course .type-lp_course.status-pending .row-actions .view{display:none;}#learn-press-admin-settings{}#learn-press-admin-settings #learn_press_email_formats{margin-bottom:10px;}#learn-press-admin-settings .learn-press-email-variables{margin-left:0;margin-top:5px;}#learn-press-admin-settings .learn-press-email-variables li{display:inline-block;cursor:pointer;}#learn-press-admin-settings .learn-press-email-variables li:hover{color:#0085ba;}#learn-press-admin-settings .nav-tab-wrapper{margin-bottom:20px;}#learn-press-admin-settings .subsubsub{float:left;width:240px;position:relative;z-index:10;margin:0 -260px 0 20px;padding-top:11px;}#learn-press-admin-settings .subsubsub li{display:block;}#learn-press-admin-settings .subsubsub li a{display:block;outline:none;box-shadow:none;}#learn-press-admin-settings .learn-press-settings-wrap{float:left;padding:1px 0 15px 300px;background:#FFF;z-index:0;position:relative;width:100%;box-sizing:border-box;opacity:0;}#learn-press-admin-settings .learn-press-settings-wrap:before{content:'';position:absolute;top:0;bottom:0;border-left:1px solid #DDD;margin-left:-30px;}#learn-press-admin-settings .learn-press-settings-wrap:after{content:'';display:block;clear:both;}#learn-press-admin-settings .learn-press-settings-wrap.ready{opacity:1;}#learn-press-admin-settings.no-subtabs .learn-press-settings-wrap{float:none;margin-left:0;padding-left:25px;}#learn-press-admin-settings.no-subtabs .learn-press-settings-wrap:before{display:none;}#learn-press-admin-settings.no-subtabs .subsubsub{display:none;}#learn-press-admin-settings input[type="radio"]{margin:0 !important;}#learn-press-admin-settings label{line-height:1;}#learn-press-admin-settings input[name="learn_press_course_base"]{margin-top:3px;margin-right:3px;}#learn-press-admin-settings .lp-group-title{padding:0 0 10px;border-bottom:3px solid #563d7c;display:inline-block;margin:0;}#learn-press-admin-settings input[type="text"],#learn-press-admin-settings input[type="email"],#learn-press-admin-settings input[type="number"],#learn-press-admin-settings input[type="tel"],#learn-press-admin-settings input[type="password"],#learn-press-admin-settings select{vertical-align:top;}#learn-press-admin-settings input[type="checkbox"]{opacity:1;}#learn-press-admin-settings .lp-setting-field span{vertical-align:top;line-height:24px;}#learn-press-admin-settings .lp-setting-field .lp-sign-times{font-size:19px;}#learn-press-message-box-block{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;z-index:99999;opacity:0.8;}#learn-press-message-box-window{position:fixed;top:0;bottom:0;left:0;right:0;z-index:100000;color:#FFF;text-align:center;}#message-box-wrap{margin:0 auto;display:inline-block;text-align:left;max-width:70%;}.message-box-title{color:#FFF;margin:0 0 40px 0;font-size:34px;}.message-box-content{font-size:16px;line-height:1.5;}.message-box-animation{background-image:url("../../images/animation.gif");width:220px;height:20px;margin:20px 0 0;}.message-box-buttons{margin:20px 0 0;border-top:1px solid #929292;padding-top:20px;}.message-box-button{margin-right:10px !important;}.post-type-lp_lesson .column-format .lp-label{font-size:100%;}.hide{display:none;}.handle.dashicons{cursor:move;margin-right:0;}.meta_box_remove .dashicons{text-decoration:initial;}.meta_box_course_lesson_quiz li input,.meta_box_course_lesson_quiz li select{min-width:250px;}.description{margin-top:5px;}.dashed-placeholder{border:2px dashed #999;padding:10px;}.learn-press-message{position:relative;}.learn-press-message .learn-press-admin-notice-dismiss{position:absolute;display:inline-block;background-color:#FFFFFF;border-radius:50%;box-shadow:0px 0px 1px 1px #F1F1F1;width:20px;height:20px;text-align:center;line-height:20px;text-decoration:none;top:50%;right:10px;margin-top:-10px;padding:0;}.learn-press-message .learn-press-admin-notice-dismiss:before{font-family:dashicons;content:'\f335';text-align:center;font-size:18px;text-decoration:none;}li.quiz,li.lesson,li.quick_lesson,li.quick_quiz{margin-left:30px;}.wp-core-ui .meta_box_add_section,.wp-core-ui .meta_box_add_lesson,.wp-core-ui .meta_box_add_quiz,.wp-core-ui .meta_box_quick_add_lesson,.wp-core-ui .meta_box_quick_add_quiz{margin-right:10px;}.column-taxonomy-course_category{width:15%;}.learnpress-advertis-admin{margin-left:160px;padding:10px 20px;position:relative;}.learnpress-advertis-admin > .item{display:none;}.learnpress-advertis-admin > .item:first-child{display:block;}.learnpress-advertis-admin .learnpress-wrap-items{position:relative;overflow:hidden;-webkit-transition:visibility 1s, opacity 1s;transition:visibility 1s, opacity 1s;padding:20px;background-color:#fff;border:1px solid #ddd;margin-bottom:30px;}.learnpress-advertis-admin .theme-thumbnail{float:left;width:35%;}.learnpress-advertis-admin .theme-detail{margin-left:35%;padding-left:20px;}.learnpress-advertis-admin .learnpress-item{position:relative;float:left;margin-right:-100%;width:100%;box-sizing:border-box;visibility:hidden;opacity:0;-webkit-transition:visibility 0.5s linear, opacity 0.5s linear;transition:visibility 0.5s linear, opacity 0.5s linear;}.learnpress-advertis-admin img{width:100%;height:auto;float:none;}.learnpress-advertis-admin .learnpress-active{visibility:visible;opacity:1;}.learnpress-advertis-admin .learnpress-controls{position:absolute;bottom:30px;right:0;height:50px;-ms-transform:translateY(-50%);-webkit-transform:translateY(-50%);transform:translateY(-50%);}.learnpress-advertis-admin .learnpress-controls:after{content:'';clear:both;display:block;}.learnpress-advertis-admin .learnpress-controls .prev-item,.learnpress-advertis-admin .learnpress-controls .next-item{position:absolute;top:0;font-family:'dashicons';width:40px;height:40px;border:1px solid #000;line-height:40px;font-size:16px;color:#000;cursor:pointer;}.learnpress-advertis-admin .learnpress-controls .prev-item{right:95px;}.learnpress-advertis-admin .learnpress-controls .prev-item:before{content:"\f341";display:block;text-align:center;}.learnpress-advertis-admin .learnpress-controls .next-item{right:45px;}.learnpress-advertis-admin .learnpress-controls .next-item:before{content:"\f345";display:block;text-align:center;}@media only screen and (max-width: 1200px) {.learnpress-advertis-admin .theme-thumbnail{width:50%;}.learnpress-advertis-admin .theme-detail{margin-left:25%;width:50%;}}@media only screen and (max-width: 960px) {.learnpress-advertis-admin{margin-left:36px;}.learnpress-advertis-admin .theme-thumbnail{float:none;width:100%;}.learnpress-advertis-admin .theme-detail{margin-top:20px;margin-left:0;padding-left:0;}}@media screen and (max-width: 782px) {.learnpress-advertis-admin{margin-left:0;}}.lpr-add-ons-wrapper .add-on-info{width:65%;display:inline-block;}.lpr-add-ons-wrapper .add-on-action{float:right;}.lpr-add-ons-wrapper .add-on-action a{text-decoration:none;padding:20px;height:80px;width:100px;background:#EBEBEB;margin-right:100px;}.lpr-add-ons-wrapper .add-on-action .add-on-enabled{text-align:center;margin:40px;}.lpr-add-ons-wrapper .add-on-action .add-on-disabled{text-align:center;margin:40px;}.lpr-add-ons-wrapper .add-on-action a:hover{text-decoration:none;content:attr(data-text-disable);}.lp-search-addon{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px;}.learn-press-add-ons{margin:20px 0 0;}.learn-press-add-ons .lp-addon-hidden{display:none !important;}.learn-press-add-ons .lp-active:nth-of-type(2n+1){clear:none;margin-right:0;margin-left:8px;}.learn-press-add-ons .lp-active:nth-of-type(2n){clear:both;margin-right:8px;margin-left:0;}.learn-press-add-ons.learnpress-premium-plugin .column-description{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-height:1.6em;max-height:6.4em;}.learn-press-add-ons.learnpress-premium-plugin .column-description p{margin:0;line-height:inherit;}.learn-press-add-ons:after{display:block;clear:both;content:'';}.learn-press-add-ons > li{}.learn-press-add-ons > li .add-on-inner{margin:0 20px 40px 20px;border:1px solid #DDD;border-radius:10px;overflow:hidden;}.learn-press-add-ons > li .add-on-thumbnail{position:relative;overflow:hidden;border-bottom:1px solid #E3E3E3;}.learn-press-add-ons > li .add-on-thumbnail img{width:100%;height:auto;vertical-align:top;}.learn-press-add-ons > li .add-on-thumbnail .add-on-overlay{position:absolute;left:0;right:0;height:100%;top:0;-webkit-transition:all 0.25s;background-color:#ADE6FF;opacity:0;}.learn-press-add-ons > li .add-on-thumbnail .add-on-description{position:absolute;left:20px;right:20px;bottom:0;-webkit-transition:all 0.25s;color:#444;opacity:0;}.learn-press-add-ons > li:hover .add-on-overlay{opacity:0.3;}.learn-press-add-ons > li:hover .add-on-description{opacity:1;}.learn-press-add-ons > li .add-on-info{min-height:80px;padding:20px;background-color:#F5F5F5;border-top:1px solid #FFF;}.learn-press-add-ons > li .add-on-info > h3{margin-top:0;}.learn-press-add-ons > li .add-on-actions{position:absolute;bottom:43px;}.learn-press-add-ons > li .add-on-actions .add-on-state{font-size:36px;vertical-align:top;display:none;margin-top:-8px;color:#05B3FF;margin-left:-9px;}.learn-press-add-ons > li .add-on-actions .add-on-state.change{display:inline-block;}.learn-press-add-ons .plugin-card-top{min-height:180px;}.premium_add_ons.active .column-description p{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;line-height:1.6em;max-height:8em;}.learn-press-add-ons .button.spinner{background:url(../../images/spinner.gif) no-repeat 4px !important;padding-left:30px;visibility:visible;width:auto;}.learn-press-add-ons .action-links > span{display:block;text-align:right;font-style:italic;}.learn-press-add-ons .action-links > span.enabled{color:#7ad03a;}.learn-press-add-ons .action-links > span.disabled{color:#FF0000;}.learn-press-add-ons .action-links .price{color:#439fdf;font-weight:700;font-size:15px;line-height:1.6em;}.learn-press-add-ons .action-links .price del{font-weight:400;color:#aaa;padding-right:5px;}.learn-press-add-ons .plugin-icon img{max-width:100%;}#learn-press-bundle-activate-add-ons.spinner{float:left !important;}.learn-press-add-ons .plugin-version{font-weight:bold;}#learn-press-add-ons-wrap #name{width:30%;}.learn-press-add-ons p:before{content:'';}#learn-press-add-ons-wrap .theme{padding:20px;background-color:#fff;border:1px solid #ddd;overflow:hidden;margin-bottom:30px;}#learn-press-add-ons-wrap .theme-controls{margin-top:20px;margin-bottom:0;}#learn-press-add-ons-wrap .theme h2{margin:0 0 20px 0;line-height:1.4;}#learn-press-add-ons-wrap .theme img{width:400px;height:auto;max-height:100%;float:left;margin:0 20px 0 0;}.related_themes .plugin-card-top{padding-bottom:0;}.related_themes .theme-content{position:relative;}.related_themes .image-thumbnail img{width:100%;}.related_themes .theme-description{margin:0 0 25px 0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6;line-height:1.6em;max-height:9.6em;}.related_themes .theme-title{margin-right:100px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;font-size:22px;line-height:1.6em;margin-bottom:0;min-height:3.2em;}.related_themes .theme-title a{color:#545454;}.related_themes .theme-rating{float:right;display:inline-block;}.related_themes .star-rating{display:inline-block;}.related_themes .count-rating{font-size:15px;position:relative;top:2px;}.related_themes .theme-detail{position:absolute;right:3px;top:0;text-align:right;line-height:1.6em;}.related_themes .theme-detail:after{content:'';display:block;clear:both;}.related_themes .theme-detail .theme-price{display:inline-block;font-size:24px;color:#545454;font-weight:700;line-height:1.6em;}.related_themes .theme-footer{clear:both;margin-left:-20px;margin-right:-20px;padding:20px;background-color:#fafafa;border-top:1px solid #ddd;overflow:hidden;}@media (max-width: 1280px) {.learn-press-add-ons > li{}}@media screen and (max-width: 782px) {.learn-press-add-ons .enable-now{padding:5px;}.learn-press-add-ons .enable-now:before{margin:0 !important;}#learn-press-add-ons-wrap .theme img{width:50%;}}@media (max-width: 768px) {.learn-press-add-ons > li{}.learn-press-add-ons > li .column-name{margin-right:150px;}}@media (max-width: 480px) {.learn-press-add-ons > li{width:100%;}#learn-press-add-ons-wrap .theme img{width:100%;margin:0 0 20px 0;}}#lpr-add-ons-wrapper .lpr-add-on-block{border-bottom:1px dashed #DDD;padding-bottom:20px;width:50%;float:left;margin-top:20px;}#lpr-add-ons-wrapper .lpr-add-on-block:after{content:'';display:block;clear:both;}#lpr-add-ons-wrapper .lpr-admin-thumbnail{float:left;width:200px;}#lpr-add-ons-wrapper .lpr-admin-thumbnail img{vertical-align:top;}#lpr-add-ons-wrapper .lpr-add-on-info{margin-left:220px;margin-right:20px;}#lpr-add-ons-wrapper .lpr-add-on-info > h3{margin-top:0;}#lpr-add-ons-wrapper .lpr-add-on-info > h3 > span{display:inline-block;padding:0 5px;background-color:#7AD3FA;color:#FFF;border-radius:3px;margin-left:10px;font-size:12px;vertical-align:top;font-weight:normal;}#lpr-add-ons-wrapper .lpr-add-on-action{float:right;width:100px;}input.lpr-fancy-checkbox{display:none;}.lpr-fancy-checkbox.tog{border-radius:20px;box-shadow:inset 0 0 4px rgba(0, 0, 0, 0.6);margin:0 auto;height:19px;width:50px;position:relative;cursor:pointer;font:11px/18px arial;background:#ccc;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease;display:inline-block !important;}.lpr-fancy-checkbox.tog:after{content:'';box-shadow:0 2px 2px rgba(0, 0, 0, 0.6);border-radius:20px;display:block;height:15px;width:15px;background:#fff;position:absolute;top:2px;left:2px;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease;}.lpr-fancy-checkbox.tog:before{content:'OFF';position:absolute;right:7px;top:1px;color:#fff;}.lpr-fancy-checkbox.tog:hover:after{left:5px;}.lpr-fancy-checkbox.tog.on:before{content:'ON';right:28px;}.lpr-fancy-checkbox.tog.on{background:#05B3FF;}.lpr-fancy-checkbox.tog.on:after{left:33px;}.lpr-fancy-checkbox.tog.on:hover:after{left:30px;}.lp-list-options{border:1px solid #DDD;border-collapse:collapse;width:100%;}.lp-list-option.lp-list-option-empty td,.lp-list-option.lp-list-option-empty th{background-color:#FBE9E9;}.lp-list-option.lp-list-option-empty .lp-answer-check input,.lp-list-option.lp-list-option-empty .lp-list-option-actions i{display:none;}.lp-list-options thead th{border:1px solid #FFF;background-color:#EAEAEA;padding:10px;text-align:left;color:#00A0D2;}.lp-list-options tbody th,.lp-list-options tbody td{border:1px solid #FFF;padding:10px 10px;text-align:left;background-color:#F5F5F5;}.lp-list-options .lp-answer-check{width:100px;}.lp-list-options tbody th input[type="text"],.lp-list-options tbody td input[type="text"]{width:100%;}.lp-list-options .ui-sortable-placeholder{visibility:visible !important;}.lp-list-options .ui-sortable-placeholder td{background-image:url("../../images/stripe.png");}.lp-list-option .lp-answer-text{color:#777;background-color:transparent;border-color:transparent;box-shadow:none;}.lp-list-option .lp-answer-text:after{font-family:dashicons;content:'\f464';}.lp-list-option .lp-answer-text:focus,.lp-list-option:hover .lp-answer-text{box-shadow:none;outline:none;background-color:transparent;border-color:transparent;}.lp-list-option:hover .lp-answer-text{border-style:dashed;}.lp-list-option-actions{cursor:pointer;color:#00A0D2;}.lp-list-option-actions.lp-move-list-option{cursor:move;}.lp-list-option-actions:hover{color:#156077;}#question_answer .rwmb-question-wrapper{margin:12px 0 0 0;}.question-bottom-actions > *{vertical-align:baseline !important;}body.post-type-lp_quiz #questions,body.post-type-lp_question #question_answer_{border:none;box-shadow:none;background-color:transparent;}body.post-type-lp_quiz #questions .handlediv,body.post-type-lp_question #question_answer_ .handlediv{display:none;}body.post-type-lp_quiz #questions .hndle,body.post-type-lp_question #question_answer_ .hndle{display:none;}body.post-type-lp_quiz #questions .inside,body.post-type-lp_question #question_answer_ .inside{padding:0;}#questions .quiz-questions-heading .questions-toggle{float:right;margin:0;line-height:1;}#questions .quiz-questions-heading .questions-toggle a:hover{color:#00a0d2;}#questions #learn-press-dropdown-questions{display:inline-block;position:relative;}#questions #learn-press-dropdown-questions > ul{position:absolute;top:100%;margin:0;padding:0;background-color:#FFF;left:0;right:0;border:1px solid #EEE;border-top:none;display:none;z-index:50;}#questions #learn-press-dropdown-questions > ul > li{margin:0;}#questions #learn-press-dropdown-questions > ul li > a{display:block;padding:5px;outline:none;box-shadow:none;}#questions #learn-press-question-name{font-size:18px;min-width:350px;margin:0;box-shadow:none;border-color:#EEE;color:#BBB;vertical-align:middle;}#questions #learn-press-toggle-questions{height:32px;vertical-align:top;background-color:#FFF;border:1px solid #EEE;width:32px;margin-left:-4px;text-align:center;font-size:30px;padding:0;color:#CCC;border-left:none;outline:none;cursor:pointer;}#questions #learn-press-toggle-questions:hover{color:#AAAAAA;}#questions #learn-press-button-add-question{_vertical-align:middle;}#questions .question-actions{background-color:#FFF;border:1px solid #DDD;padding:10px;display:inline-block;margin-top:20px;position:relative;z-index:999;}#questions .quiz-question-head .quiz-question-actions{float:right;margin:1px 0;visibility:hidden;padding-top:2px;}#questions .quiz-question-head .quiz-question-actions a{margin:0 3px;color:#666666;vertical-align:middle;box-shadow:none;}#questions .quiz-question-head .quiz-question-actions a:hover{color:#00a0d2;}#questions .quiz-question-head:hover .quiz-question-actions{visibility:visible;}#questions .quiz-question.ui-sortable-placeholder{visibility:visible !important;background-image:url("../../images/stripe.png");border:1px solid #DDD;border-bottom:none;}#questions .question-name{border:none;box-shadow:none;padding-left:0;width:70%;color:#777;vertical-align:middle;}#questions .quiz-question-icon img{max-width:100%;height:auto;}#questions #learn-press-dropdown-questions .added{display:none;}.lpr-curriculum-section > h3{padding:0 !important;}.lpr-curriculum-section > h3 .lpr-action{top:0;right:0;}.lpr-curriculum-section.lpr-empty > h3{cursor:default !important;}.lpr-curriculum-section.lpr-empty .lpr-action{display:none !important;}.lpr-course-curriculum button span{text-decoration:underline;}#learn-press-statistic{margin-top:20px;}.learn-press-chart{position:relative;}.learn-press-chart canvas{height:70vh;width:100vw;}.chart-buttons form{display:inline-block;vertical-align:top;}.chart-buttons form input[type="text"]{width:105px;font-size:14px;vertical-align:top;margin:0;text-align:center;font-weight:bold;padding:4px;}.chart-buttons form span{display:inline-block;vertical-align:middle;font-weight:bold;padding:5px;}.learn-press-chart.loading:after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;z-index:10;background:#FFF;opacity:0.5;}.chart-description li{display:inline-block;margin-right:15px;}.chart-description li:before{content:'';display:inline-block;width:10px;height:10px;vertical-align:middle;margin-right:5px;}.chart-description li span{display:inline-block;vertical-align:middle;font-weight:bold;}.chart-description li.all:before{background:#2FA7FF;}.chart-description li.instructors:before{background:#EAC79B;}.chart-description li.students:before{background:#D4D0CB;}.lpr-stats-time{text-align:center;}.lpr-hidden{display:none;}#lpr-custom-time{position:relative;top:4px;}#lpr-page-block{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:0.5;display:none;z-index:9999;}#form-quick-add-lesson-link{position:absolute;}#_lpr_course_price_description > span{font-weight:bold;font-size:15px;}.lpr-ignore,.lpr-ignore:hover{color:#dd3d36;}.lpr-ignore:hover{cursor:pointer;}.lpr-quick-add-page-inline,.lpr-quick-actions-inline{display:inline-block;vertical-align:middle;margin:0 !important;}#lpr-toggle-quiz-mode{background-color:#0077FF;padding:3px;margin-left:5px;display:inline-block;border-radius:3px;text-decoration:none;color:#FFF;}.column-num_of_question{width:150px;}.lp-search-items input[name="lp-item-name"]{width:500px;}.lp-button-dropdown{padding-left:0 !important;padding-right:28px !important;position:relative;z-index:99998;}.lp-button-dropdown .lp-dropdown-label{padding-left:10px;}.lp-button-dropdown .lp-dropdown-arrow{display:inline-block;text-align:center;padding:0 10px;position:absolute;top:-1px;bottom:-1px;}.lp-button-dropdown .lp-dropdown-items{position:absolute;margin:0;background-color:#FFF;top:100%;margin-top:1px;border:1px solid #DDD;right:-1px;width:200px;z-index:9999999;display:none;}.lp-button-dropdown .lp-dropdown-items li{margin:0;}.lp-button-dropdown .lp-dropdown-items li a{display:block;padding:10px;line-height:1;text-decoration:none;outline:none;box-shadow:none;}.lp-button-dropdown .lp-dropdown-items li a:hover{background-color:#F5F5F5;}.lp-button-dropdown:not(.disabled):hover ul,.lp-button-dropdown:not(.disabled) ul:hover{display:block;}.curriculum-section .lp-check-items,.curriculum-section .lp-check-items:hover{padding-left:5px;padding-right:34px;border-color:transparent;background:transparent;box-shadow:none;}.column-format,.column-is_previewable,.column-taxonomy-question-tag{width:10%;}.learn-press-add-ons .plugin-card .install-now:before,.learn-press-add-ons .plugin-card .disable-now:before,.learn-press-add-ons .plugin-card .enable-now:before{margin:3px 5px 0 -2px;display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;}.learn-press-add-ons .plugin-card .install-now:before{content:'\f106';color:#0073aa;}.learn-press-add-ons .plugin-card .disable-now:before{content:'\f147';color:#0073aa;}.learn-press-add-ons .plugin-card .enable-now:before{content:'\f335';color:#d54e21;}.learn-press-add-ons .plugin-card .disable-now:hover:before{content:'\f335';color:#d54e21;}.learn-press-add-ons .plugin-card .enable-now:hover:before{content:'\f147';color:#0073aa;}.learn-press-add-ons .plugin-card .button-working:before{content:'\f463' !important;-webkit-animation:lp-spinner 2s infinite linear;animation:lp-spinner 2s infinite linear;margin-right:0;}.learn-press-add-ons .plugin-card .button-working span{display:none;}.lp-button-actions a{text-decoration:none;margin-left:5px;}.learn-press-quick-confirm{position:absolute;z-index:9999;color:#ffffff;padding:2px 8px;display:block;white-space:nowrap;left:-39.625px;top:24px;background-color:#C90202;cursor:pointer;}.learn-press-quick-confirm:hover,.learn-press-quick-confirm:hover:before{background-color:#d73b00;}.learn-press-quick-confirm:before{content:'';display:block;position:absolute;transform:rotate(45deg);width:7px;height:7px;top:-3px;background-color:#C90202;right:7px;}.wp-core-ui .meta_box_add_section,.wp-core-ui .meta_box_add_lesson{margin-right:10px;}.rwmb-meta-box label{color:#222;font-weight:bold;display:block;margin:0 0 16px 0;}.post-type-lp_order #post-body-content,.post-type-lp_order #order_details .handlediv,.post-type-lp_order #order_details .hndle{display:none;}.post-type-lp_order #submitpost .misc-pub-section label{display:block;font-weight:bold;}#learn-press-order{margin:15px;}#learn-press-order .order-data-number{font-size:36px;padding:0;margin-bottom:20px;}#learn-press-order > h3{margin:0 0 10px 0;padding:0;}#learn-press-order .order-data-date,#learn-press-order .order-data-status,#learn-press-order .order-data-payment-method{font-size:18px;padding:0 0 10px 0;}#learn-press-order .user-display-name,#learn-press-order .user-email,#learn-press-order .user-ip-address{padding:0;margin:0 0 10px 0;}#learn-press-order .order-items table{border:1px solid #DDD;border-collapse:collapse;width:100%;}#learn-press-order .order-items table th,#learn-press-order .order-items table td{text-align:left;padding:10px 15px;border:1px solid #DDD;}#learn-press-install-sample-data-notice .install-sample-data-loading{display:none;}#learn_press_dashboard_widget .subsubsub{float:none;}.learn-press-checkbox{display:none !important;}input.regular-text[id^="learn-press-emails"]{width:97%;}.ios-ui-select{background:#dddddd;border:none !important;height:18px;-webkit-border-radius:9px;border-radius:9px;width:30px;-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-ms-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;position:relative;display:inline-block;}.ios-ui-select.checked{-webkit-box-shadow:inset 0 0 0 18px #6ddc5f;box-shadow:inset 0 0 0 18px #6ddc5f;}.ios-ui-select.checked .inner{left:13px;}.ios-ui-select .inner{width:16px;height:16px;position:absolute;top:1px;left:1px;-webkit-border-radius:100%;border-radius:100%;background:white;-webkit-transition:all 350ms cubic-bezier(0, 0.89, 0.44, 1);-moz-transition:all 350ms cubic-bezier(0, 0.89, 0.44, 1);-o-transition:all 350ms cubic-bezier(0, 0.89, 0.44, 1);transition:all 350ms cubic-bezier(0, 0.89, 0.44, 1);-webkit-box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.1);}.lp-label-counter{display:inline-block;background-color:#0073AA;border-radius:10px;height:21px;line-height:20px;text-align:center;min-width:21px;color:#FFF;padding:0 5px;}.column-num_of_question,.column-preview,.column-duration,.column-type,.column-taxonomy-question_tag{width:100px;text-align:left;}#learn_press_dashboard_widget .rss-widget ul li{margin-bottom:10px !important;}#learn_press_dashboard_widget .rss-date{margin-left:0;}#learn_press_dashboard_widget_status .inside{padding:0;margin-top:0;}#learn_press_dashboard_widget_status .inside .learnpress-statistic-status{margin-top:0;}#learn_press_dashboard_widget_status .inside .learnpress-statistic-status li{width:50%;float:left;}#learn_press_dashboard_widget_status .inside .learnpress-statistic-status li > a,#learn_press_dashboard_widget_status .inside .learnpress-statistic-status li > span{padding:8px 12px;display:block;}#learn_press_dashboard_widget_status .inside .learnpress-statistic-status li.full-width{width:100%;float:none;clear:both;}#learn_press_dashboard_widget_status .inside .learnpress-statistic-status li.full-width:first-child{border-bottom:1px solid #ececec;}#learn_press_dashboard_widget_status .inside .learnpress-statistic-status li.full-width:first-child a{padding:10px 12px;}#learn_press_dashboard_widget_status .inside .learnpress-statistic-status li.full-width:last-child{border-top:1px solid #ececec;margin:0 12px;}#learn_press_dashboard_widget_status .inside .learnpress-statistic-status li.full-width > a{display:inline-block;}.lp-template-overrides{margin-top:20px;}.lp-template-overrides thead th h4{margin:0;}.lp-template-overrides tbody th{font-weight:bold;}.lp-template-overrides tbody th p{margin:0 0 0 10px;display:inline-block;}.lp-template-overrides tbody th p a{font-weight:normal;outline:none;border:none;box-shadow:none;margin:0;padding:2px 8px;border-radius:3px;}.lp-template-overrides tbody th p a.current{background:#00aadc;color:#FFF;}.lp-template-overrides .lp-template-version{width:100px;}.lp-template-overrides .lp-template-version.outdated{color:#FF0000;}.lp-template-overrides .lp-template-version.up-to-date{color:#1859ff;}.lp-template-overrides .lp-template-version,.lp-template-overrides .lp-core-version{font-weight:bold;}.lp-template-overrides .lp-template-file{width:50%;}.lp-template-overrides #learn-press-no-templates td p{color:#0073aa;}@-webkit-keyframes lp-spinner{0% {-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}@keyframes lp-spinner{0% {-webkit-transform:rotate(0deg);transform:rotate(0deg);}}.rwmb-quiz_questions-wrapper{background:#FFF;}.rwmb-quiz_questions-wrapper .quiz-questions-heading{border:1px solid #DDD;background-color:#F9F9F9;border-bottom:none;margin:0;color:#777;padding:15px 20px 20px;font-size:24px;}.rwmb-quiz_questions-wrapper .quiz-questions-heading a{font-size:32px;color:#0073aa;box-shadow:none;}.rwmb-quiz_questions-wrapper .quiz-questions-heading a.dashicons-arrow-down::before{margin-left:-10px;}.rwmb-quiz_questions-wrapper .quiz-questions-heading a:hover{color:#00a0d2;}.rwmb-quiz_questions-wrapper #learn-press-list-questions{padding:20px;border:1px solid #DDD;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question{background:#FFF;border:1px dashed #DDD;margin:-1px 0 0 0;padding:5px 0;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question:nth-child(2n+1){background-color:#FCFCFC;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question:nth-child(2n+1) .question-name{background-color:#FCFCFC;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question .quiz-question-head{padding:0 20px;position:relative;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question .quiz-question-head .quiz-question-icon{width:20px;height:20px;display:inline-block;vertical-align:middle;margin-right:10px;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question .quiz-question-head .question-name{font-size:16px;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question .quiz-question-head .move{color:#666;cursor:url("../../images/openhand.cur") 7 5, default;position:absolute;right:14px;height:50px;top:5px;width:12px;box-shadow:none;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question .quiz-question-head .move:hover{color:#00a0d2;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question .quiz-question-head:hover .quiz-question-actions{margin-right:20px;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question .quiz-question-head:hover .quiz-question-actions .dashicons-admin-page::before{margin-top:2px;}.rwmb-quiz_questions-wrapper #learn-press-list-questions .quiz-question .quiz-question-content{padding:0 20px;}.post-type-lp_quiz #general-settings a{font-size:14px;font-weight:400;margin-left:10px;}
assets/css/admin/admin.css CHANGED
@@ -333,6 +333,7 @@ li.quick_quiz {
333
  margin-left: 160px;
334
  padding: 10px 20px;
335
  position: relative;
 
336
  }
337
  .learnpress-advertis-admin > .item {
338
  display: none;
@@ -1590,7 +1591,8 @@ input.regular-text[id^="learn-press-emails"] {
1590
  width: 50%;
1591
  float: left;
1592
  }
1593
- #learn_press_dashboard_widget_status .inside .learnpress-statistic-status li > a {
 
1594
  padding: 8px 12px;
1595
  display: block;
1596
  }
333
  margin-left: 160px;
334
  padding: 10px 20px;
335
  position: relative;
336
+ overflow: hidden;
337
  }
338
  .learnpress-advertis-admin > .item {
339
  display: none;
1591
  width: 50%;
1592
  float: left;
1593
  }
1594
+ #learn_press_dashboard_widget_status .inside .learnpress-statistic-status li > a,
1595
+ #learn_press_dashboard_widget_status .inside .learnpress-statistic-status li > span {
1596
  padding: 8px 12px;
1597
  display: block;
1598
  }
assets/css/admin/admin.less CHANGED
@@ -384,6 +384,7 @@ li.quiz, li.lesson, li.quick_lesson, li.quick_quiz {
384
  margin-left: 160px;
385
  padding: 10px 20px;
386
  position: relative;
 
387
 
388
  > .item {
389
  display: none;
@@ -1903,7 +1904,7 @@ input.regular-text[id^="learn-press-emails"] {
1903
  li {
1904
  width: 50%;
1905
  float: left;
1906
- > a {
1907
  padding: 8px 12px;
1908
  display: block;
1909
  }
384
  margin-left: 160px;
385
  padding: 10px 20px;
386
  position: relative;
387
+ overflow: hidden;
388
 
389
  > .item {
390
  display: none;
1904
  li {
1905
  width: 50%;
1906
  float: left;
1907
+ > a, > span {
1908
  padding: 8px 12px;
1909
  display: block;
1910
  }
assets/css/learnpress-compressed.css ADDED
@@ -0,0 +1 @@
 
1
+ @font-face{font-family:'lp-icons';src:url('../fonts/lp-icons.eot?f41nl#iefix') format('embedded-opentype'), url('../fonts/lp-icons.ttf?f41nl') format('truetype'), url('../fonts/lp-icons.woff?f41nl') format('woff'), url('../fonts/lp-icons.svg?f41nl#lp-icons') format('svg');font-weight:normal;font-style:normal;}[class^="lp-icon-"],[class*=" lp-icon-"]{font-family:'lp-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.lp-icon-file-text2:before{content:"\e926";}.lp-icon-file-picture:before{content:"\e927";}.lp-icon-file-music:before{content:"\e928";}.lp-icon-file-video:before{content:"\e92a";}.lp-icon-file-zip:before{content:"\e92b";}.lp-icon-paste:before{content:"\e92d";}.lp-icon-alarm:before{content:"\e950";}.lp-icon-cross:before{content:"\ea0f";}.lp-icon-checkmark:before{content:"\ea10";}.lp-icon-spinner2:before{content:"\e97b";}.lp-icon-plus:before{content:"\ea0a";}.lp-icon-minus:before{content:"\ea0b";}.clearfix:after{display:block;content:'';clear:both;}.overlay-processing:before,.overlay-processing:after{content:'';display:block;position:fixed;top:0;left:0;width:100%;height:100%;z-index:999999;}.overlay-processing:before{background:#000;opacity:0.5;}.overlay-processing:after{background:#FFF;}.hide-if-js{display:none !important;}.learn-press-courses{list-style:none;clear:both;margin:0 -30px 0 0;padding:0;}.learn-press-courses:after{display:block;content:'';clear:both;}.learn-press-courses li.course{list-style-type:none;float:left;width:23%;margin:0 2% 30px 0;padding:0;box-sizing:border-box;border:1px solid #DDD;background:#FFF;}.learn-press-courses li.course .view-more{padding:0 15px;text-decoration:none;box-shadow:none;}.learn-press-courses li.course h3{padding:15px;margin:0;font-size:18px;line-height:1.5;}.learn-press-courses li.course .course-thumbnail{position:relative;}.learn-press-courses li.course .course-thumbnail img{max-width:100%;height:auto;}.learn-press-courses li.course .course-thumbnail:after{content:'';position:absolute;width:100%;height:100%;left:0;top:0;}.learn-press-courses li.course .course-info{padding:0 15px 15px;font-size:14px;overflow:hidden;}.learn-press-courses li.course .course-students{float:left;}.learn-press-courses li.course .course-instructor{margin-bottom:20px;}.learn-press-courses li.course .course-origin-price{float:right;text-decoration:line-through;padding-right:5px;}.learn-press-courses li.course .course-price{float:right;color:#54b551;}.learn-press-courses li.course .course-info > *{display:block;}.learn-press-notice .button{float:right;}.learn-press-form{margin-bottom:20px;}#learn-press-course-curriculum ul.curriculum-sections,#learn-press-course-curriculum ul.section-content{list-style:none;margin:0;padding:0;background-color:#F5F5F5;}#learn-press-course-curriculum ul.curriculum-sections li.section,#learn-press-course-curriculum ul.section-content li.section{list-style-type:none;}#learn-press-course-curriculum .section-header{background-color:#EEE;margin:0;padding:20px 15px;border-top:1px solid #FFF;position:relative;}#learn-press-course-curriculum .section-header p{display:inline-block;font-weight:normal;font-style:italic;color:#999999;font-size:14px;margin:0;padding:10px 0;text-transform:none;}#learn-press-course-curriculum .section-header:hover{background:#DDD;}#learn-press-course-curriculum .section-header .meta{font-size:smaller;font-weight:normal;position:absolute;right:15px;top:20px;}#learn-press-course-curriculum .section-header .meta .collapse{display:inline-block;position:relative;font-family:'lp-icons';background:#95e6f9;width:24px;height:24px;line-height:24px;text-align:center;color:#FFF;border-radius:5px;vertical-align:middle;margin-left:5px;}#learn-press-course-curriculum .section-header .meta .collapse:before{content:"\ea0b";margin:0 auto;}#learn-press-course-curriculum .section-header .meta .collapse:hover{cursor:pointer;}#learn-press-course-curriculum .section-header .meta .collapse.plus:before{content:"\ea0a";}#learn-press-course-curriculum .course-item{margin:0;list-style:none;padding:10px 15px;border-top:1px solid #ffffff;position:relative;-webkit-transition:background linear 0.5s;-khtml-transition:background linear 0.5s;-moz-transition:background linear 0.5s;-ms-transition:background linear 0.5s;-o-transition:background linear 0.5s;transition:background linear 0.5s;}#learn-press-course-curriculum .course-item .lp-label-viewing,#learn-press-course-curriculum .course-item .lp-label-completed{display:none;}#learn-press-course-curriculum .course-item .course-item-title{display:block;box-shadow:none;text-align:justify;float:left;}#learn-press-course-curriculum .course-item .course-item-title:before{display:inline-block;font-size:16px;margin-right:10px;font-family:'lp-icons';}#learn-press-course-curriculum .course-item .lp-icon{display:none;}#learn-press-course-curriculum .course-item.viewable{cursor:pointer;}#learn-press-course-curriculum .course-item.viewable:hover{background:#e7ecfb;-webkit-transition:background linear 0s;-khtml-transition:background linear 0s;-moz-transition:background linear 0s;-ms-transition:background linear 0s;-o-transition:background linear 0s;transition:background linear 0s;}#learn-press-course-curriculum .course-item.course-lesson .course-item-title:before{content:'\e926';}#learn-press-course-curriculum .course-item.course-quiz .course-item-title:before{content:'\e950';}#learn-press-course-curriculum .course-item.item-current{background:#FFF;}#learn-press-course-curriculum .course-item.item-current:before{display:block;width:3px;background:#95e6f9;position:absolute;left:0;top:0;height:100%;content:'';}#learn-press-course-curriculum .course-item.item-has-status .item-status{display:inline-block;background:#d6d6d6;margin-left:5px;}#learn-press-course-curriculum .course-item.item-has-status .item-status:before{content:'\ea10';color:#FFF;}#learn-press-course-curriculum .course-item.item-has-status.item-completed .item-status{background:#95e6f9;}#learn-press-course-curriculum .course-item.focus{background:#ffb710;}#learn-press-course-curriculum .course-item.focus.off{-webkit-transition:none;-khtml-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}#learn-press-course-curriculum .course-item:after{display:block;clear:both;content:'';}#learn-press-course-curriculum .course-item-meta{display:block;line-height:1;__position:absolute;top:15px;right:15px;float:right;margin-top:5px;}.lp-icon{display:inline-block;font-family:'lp-icons';background:#95e6f9;width:24px;height:24px;line-height:24px;text-align:center;color:#FFF;border-radius:5px;vertical-align:middle;}.lp-icon:before{width:32px;height:32px;}.lp-label{display:inline-block;line-height:24px;font-size:78%;vertical-align:middle;color:#ffffff;padding:0 10px;background:#DDD;height:24px;-webkit-border-radius:4px;-khtml-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.lp-label.lp-label-viewing{background-color:#39afff;}.lp-label.lp-label-completed{background-color:#39c7ce;}.lp-label.lp-label-lesson{background-color:#337ab7;}.lp-label.lp-label-quiz{background-color:#53658c;}.lp-label.lp-label-preview{background-color:#02a7ce;}.learn-press-content-protected-message{border:3px solid #ff8484;background:#FFF;padding:20px;color:#ff8484;margin:10px 0;border-radius:6px;}.learn-press-content-protected-message .icon{position:relative;display:inline-block;width:30px;height:30px;margin-right:10px;vertical-align:middle;}.learn-press-content-protected-message .icon:before,.learn-press-content-protected-message .icon:after{width:3px;background:#ff8484;height:30px;content:'';display:inline-block;position:absolute;top:0;left:13.5px;}.learn-press-content-protected-message .icon:before{-webkit-transform:rotate(-45deg);-khtml-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);}.learn-press-content-protected-message .icon:after{-webkit-transform:rotate(45deg);-khtml-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);}.learn-press-breadcrumb{margin-bottom:20px;}.single-lp_course .learn-press-course-results-progress{margin-bottom:40px;}.single-lp_course .learn-press-course-results-progress .items-progress{float:left;width:68%;margin-right:2%;clear:left;margin-bottom:50px;}.single-lp_course .learn-press-course-results-progress .lp-course-progress-heading{margin-bottom:10px;}.single-lp_course .learn-press-course-results-progress .course-progress{float:left;width:30%;}.single-lp_course .learn-press-course-results-progress .number,.single-lp_course .learn-press-course-results-progress .percentage-sign{display:inline-block;vertical-align:bottom;line-height:1;font-size:25px;}.single-lp_course .learn-press-course-results-progress .percentage-sign{margin-left:5px;}.single-lp_course .learn-press-course-results-progress:after{display:block;content:'';clear:both;}.lp-course-progress{position:relative;}.lp-course-progress .lp-progress-bar{height:15px;background:#DDD;margin:10px 0 15px 0;overflow:hidden;-webkit-border-radius:3px;-khtml-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;}.lp-course-progress .lp-progress-bar .lp-progress-value{width:50%;height:15px;background:#95e6f9;}.lp-course-progress .lp-passing-conditional{left:0%;position:absolute;height:25px;top:-5px;margin-left:-5px;cursor:pointer;}.lp-course-progress .lp-passing-conditional:before,.lp-course-progress .lp-passing-conditional:after{content:'';display:inline-block;border:5px solid transparent;left:0;position:absolute;}.lp-course-progress .lp-passing-conditional:before{border-top-color:#DDD;}.lp-course-progress .lp-passing-conditional:after{border-bottom-color:#DDD;bottom:0;}#learn-press-content-item{border:1px solid #DDD;display:none;}.learn-press-tabs .learn-press-nav-tabs{list-style:none;padding:0;margin:0 0 20px 0;border-bottom:1px solid #DDD;}.learn-press-tabs .learn-press-nav-tabs .learn-press-nav-tab{list-style-type:none;float:left;margin-bottom:-1px;position:relative;}.learn-press-tabs .learn-press-nav-tabs .learn-press-nav-tab a{display:inline-block;padding:10px 15px;outline:none;box-shadow:none;color:#686868;border-bottom:1px solid #DDD;}.learn-press-tabs .learn-press-nav-tabs .learn-press-nav-tab.active{border-bottom:4px solid #007acc;}.learn-press-tabs .learn-press-nav-tabs .learn-press-nav-tab.active a{color:#007acc;border-bottom:none;margin-bottom:-4px;}.learn-press-tabs .learn-press-nav-tabs .learn-press-nav-tab.active:after{position:absolute;width:100%;border-bottom:1px solid #FFF;bottom:-1px;content:'';}.learn-press-tabs .learn-press-nav-tabs:after{content:'';display:block;clear:both;}.learn-press-tabs .learn-press-tab-panel{display:none;margin-bottom:20px;}.learn-press-tabs .learn-press-tab-panel.active{display:block;}#popup_overlay{z-index:10000000 !important;}#popup_container{z-index:10000001 !important;background:#FFF;}body.course-has-popup{overflow:hidden;}#course-curriculum-popup{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;z-index:999999;}#course-curriculum-popup *{box-sizing:border-box;}#course-curriculum-popup #popup-sidebar{float:left;width:350px;position:absolute;top:60px;bottom:0;overflow:auto;background:#FFF;border-right:1px solid #DDD;}#course-curriculum-popup #popup-sidebar .course-curriculum-title{display:none;}#course-curriculum-popup #popup-sidebar .curriculum-sections{margin:0;font-size:smaller;}#course-curriculum-popup #popup-sidebar .learn-press-course-results-progress{padding:15px 20px;margin-bottom:0;}#course-curriculum-popup #popup-sidebar .learn-press-course-results-progress .items-progress,#course-curriculum-popup #popup-sidebar .learn-press-course-results-progress .course-progress{width:100%;margin:0 !important;}#course-curriculum-popup #popup-main{position:absolute;top:0;left:350px;right:0;bottom:0;background:#FFF;}#course-curriculum-popup #popup-main #popup-header{position:absolute;top:0;left:-350px;right:0;height:60px;background:#cc540d;border-bottom:1px solid #ab4a10;}#course-curriculum-popup #popup-main #popup-header .popup-menu{position:absolute;height:60px;width:350px;border-right:1px solid #ab4a10;}#course-curriculum-popup #popup-main #popup-header .popup-close,#course-curriculum-popup #popup-main #popup-header .sidebar-hide-btn,#course-curriculum-popup #popup-main #popup-header .sidebar-show-btn{width:59px;height:59px;position:absolute;top:0;cursor:pointer;font-size:34px;line-height:60px;text-align:center;color:#FFF;}#course-curriculum-popup #popup-main #popup-header .popup-close:hover,#course-curriculum-popup #popup-main #popup-header .sidebar-hide-btn:hover,#course-curriculum-popup #popup-main #popup-header .sidebar-show-btn:hover{background:#b34c10;}#course-curriculum-popup #popup-main #popup-header .sidebar-hide-btn{left:0;}#course-curriculum-popup #popup-main #popup-header .sidebar-show-btn{position:relative;margin-left:-20px;margin-right:20px;}#course-curriculum-popup #popup-main #popup-header .popup-close{right:0px;}#course-curriculum-popup #popup-main #popup-header .popup-close:before,#course-curriculum-popup #popup-main #popup-header .popup-close:after{content:'';border-top:3px solid #FFF;width:30px;display:inline-block;position:absolute;top:29px;left:17px;}#course-curriculum-popup #popup-main #popup-header .popup-close:before{-webkit-transform:rotate(45deg);}#course-curriculum-popup #popup-main #popup-header .popup-close:after{-webkit-transform:rotate(-45deg);}#course-curriculum-popup #popup-main #popup-header .popup-close:hover{background:#b34c10;}#course-curriculum-popup #popup-main #popup-header .popup-close:hover:before,#course-curriculum-popup #popup-main #popup-header .popup-close:hover:after{border-color:#FFF;}#course-curriculum-popup #popup-main #popup-header .popup-title{margin:0 0 0 350px;height:60px;line-height:60px;padding:0 20px;color:#FFF;position:relative;}#course-curriculum-popup #popup-main #popup-content{position:absolute;top:60px;bottom:50px;left:0;right:0;overflow:auto;transition:top linear 0.25s, bottom linear 0.25s;}#course-curriculum-popup #popup-main #popup-content #popup-content-inner{margin:20px 40px;}#course-curriculum-popup #popup-main #popup-footer{position:absolute;bottom:0;left:0;right:0;height:50px;background:#F5F5F5;border-top:1px solid #DDD;}#course-curriculum-popup #popup-main #popup-footer .footer-control{display:block;height:50px;line-height:50px;padding:0 20px;background:#FFF;}#course-curriculum-popup #popup-main #popup-footer .footer-control.prev-item{float:left;}#course-curriculum-popup #popup-main #popup-footer .footer-control.next-item{float:right;}#course-curriculum-popup #popup-main #popup-header,#course-curriculum-popup #popup-main #popup-footer{transition:opacity linear 0.25s;}#course-curriculum-popup #popup-main.expand{position:fixed;left:0;padding:0 20%;top:0;bottom:0;}#course-curriculum-popup #popup-main.expand #popup-header,#course-curriculum-popup #popup-main.expand #popup-footer{opacity:0;}#course-curriculum-popup #popup-main.expand #popup-content{top:0;bottom:0;}#course-curriculum-popup iframe{position:absolute;top:0;left:0;height:100%;width:100%;border:none;margin:0;background:#FFF;}.learn-press-content-item-title{margin-bottom:20px;border-bottom:2px solid #DDD;padding-bottom:20px;}.learn-press-content-item-title.content-item-quiz-title{display:block;content:'';clear:both;}.learn-press-content-item-title.content-item-quiz-title h4{float:left;font-size:24px;margin-bottom:0;}.learn-press-content-item-title.content-item-quiz-title .quiz-countdown{float:right;position:relative;min-width:100px;background:#F5F5F5;text-align:center;font-size:18px;}.learn-press-content-item-title.content-item-quiz-title .quiz-countdown:after,.learn-press-content-item-title.content-item-quiz-title .quiz-countdown:before{padding:0 10px;height:3px;position:absolute;bottom:-3px;background:#000;content:'';left:0;}.learn-press-content-item-title.content-item-quiz-title .quiz-countdown:before{width:100%;}.learn-press-content-item-title.content-item-quiz-title .quiz-countdown:after{background:#00adff;padding:0;}.learn-press-content-item-title.content-item-quiz-title .quiz-countdown.warning-time-over:after{background:#FF0000;}.learn-press-content-item-title.content-item-quiz-title:after{content:'';display:block;clear:both;}.learn-press-content-item-title .lp-expand{float:right;width:43px;height:43px;line-height:43px;background:#F5F5F5;margin:0 10px;border:1px solid #DDD;outline:none;}.learn-press-content-item-summary{margin-bottom:30px;}.learn-press-content-item-summary .quiz-question-title{margin-bottom:20px;}.learn-press-content-item-summary .learn-press-question-explanation,.learn-press-content-item-summary .learn-press-question-hint{background:#F5F5F5;padding:15px 20px;font-style:italic;margin-bottom:20px;}.learn-press-content-item-summary .learn-press-question-explanation .hint-title,.learn-press-content-item-summary .learn-press-question-hint .hint-title,.learn-press-content-item-summary .learn-press-question-explanation .explanation-title,.learn-press-content-item-summary .learn-press-question-hint .explanation-title{font-style:normal;}.button-finish-quiz{float:right;}.learnpress form.purchase-course{margin-bottom:20px;}#learn-press-block-content{display:none;width:100%;height:100%;background:rgba(255, 255, 255, 0.25);position:fixed;z-index:99999999;top:0;left:0;}#learn-press-block-content:before,#learn-press-block-content:after,#learn-press-block-content span{position:absolute;-webkit-border-radius:50%;-khtml-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%;left:50%;top:50%;box-sizing:border-box;}#learn-press-block-content:before{content:'';border:2px solid #000;z-index:10;-webkit-animation:spin-13 1.5s infinite;-moz-animation:spin-13 1.5s infinite;animation:spin-13 1.5s infinite;width:80px;height:80px;margin-left:-40px;margin-top:-40px;-webkit-clip-path:polygon(0px 80px, 80px 80px, 80px 40px, 40px 40px, 40px 0, 0 0);}#learn-press-block-content:after{z-index:0;content:'';border:10px solid #000000;margin-left:-80px;margin-top:-80px;width:160px;height:160px;opacity:0;}#learn-press-block-content span{z-index:20;-webkit-animation:spin-12 1.5s infinite;-moz-animation:spin-12 1.5s infinite;animation:spin-12 1.5s infinite;clip:rect(0, 84px, 42px, 42px);width:84px;height:84px;margin-left:-42px;margin-top:-42px;clip:rect(0, 64px, 32px, 32px);width:64px;height:64px;margin-left:-32px;margin-top:-32px;}#learn-press-block-content span:before{content:'';border:6px solid #95e6f9;position:absolute;-webkit-border-radius:50%;-khtml-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%;box-sizing:border-box;width:84px;height:84px;width:64px;height:64px;}body.block-content #learn-press-block-content{display:block;}.quiz-buttons{margin-bottom:20px;clear:both;}.quiz-intro{list-style:none;padding:0;}.quiz-questions-list{margin:0 0 20px 0;padding:0;list-style-position:inside;}.quiz-questions-list li{margin:0 0 10px 0;}.quiz-questions-list .question-title{margin:0 0 5px 0;}.quiz-questions-list .current .question-title{font-weight:bold;}.quiz-description .learn-press-question-title,.question-content .learn-press-question-title{margin-bottom:20px;}.quiz-countdown{float:right;position:relative;min-width:150px;background:#F5F5F5;text-align:center;font-size:18px;padding:5px 0;}#quiz-countdown .progress-circle{overflow:hidden;box-shadow:0 0 3px #bdbdbd inset;}#quiz-countdown .progress-circle .inside{line-height:1;}#quiz-countdown .progress-circle .inside .countdown{font-size:48px;color:#087998;_text-shadow:1px 1px #8ee5fd;margin-top:110px;}#quiz-countdown .progress-circle .inside p{margin:10px 0 0 0;color:#DDD;}#quiz-countdown .progress-circle:after{background:#00b9eb;box-shadow:0 0 6px #097a98;}#quiz-progress .progress-circle{width:200px;height:200px;border-radius:50%;background-color:#DDD;position:relative;}#quiz-progress .progress-circle .background{content:"";position:absolute;border-radius:50%;width:200px;height:200px;clip:rect(0, 200px, 200px, 100px);}#quiz-progress .progress-circle .background .fill{content:"";position:absolute;border-radius:50%;width:200px;height:200px;clip:rect(0, 100px, 200px, 0);background:#FF0000;transform:rotate(0deg);}#quiz-progress .progress-circle:after{content:'';width:170px;height:170px;background:#FFF;-webkit-border-radius:50%;-khtml-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%;position:absolute;top:50%;left:50%;margin-top:-85px;margin-left:-85px;pointer-events:none;}#quiz-progress .progress-circle .inside{position:absolute;width:100%;height:100%;line-height:200px;text-align:center;z-index:10;}#quiz-progress .progress-circle.gt-50{background-color:#FF0000;}#quiz-progress .progress-circle.gt-50 .background{clip:rect(0, 100px, 200px, 0);}#quiz-progress .progress-circle.gt-50 .fill{clip:rect(0, 200px, 200px, 100px);background:#DDD;}.quiz-result .quiz-result-mark{margin-bottom:20px;}.quiz-result .quiz-result-mark .progress-circle{width:200px;height:200px;border-radius:50%;background-color:#DDD;position:relative;}.quiz-result .quiz-result-mark .progress-circle .background{content:"";position:absolute;border-radius:50%;width:200px;height:200px;clip:rect(0, 200px, 200px, 100px);}.quiz-result .quiz-result-mark .progress-circle .background .fill{content:"";position:absolute;border-radius:50%;width:200px;height:200px;clip:rect(0, 100px, 200px, 0);background:#95e6f9;transform:rotate(0deg);}.quiz-result .quiz-result-mark .progress-circle:after{content:'';width:170px;height:170px;background:#FFF;-webkit-border-radius:50%;-khtml-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%;position:absolute;top:50%;left:50%;margin-top:-85px;margin-left:-85px;pointer-events:none;}.quiz-result .quiz-result-mark .progress-circle .inside{position:absolute;width:100%;height:100%;line-height:200px;text-align:center;z-index:10;}.quiz-result .quiz-result-mark .progress-circle.gt-50{background-color:#95e6f9;}.quiz-result .quiz-result-mark .progress-circle.gt-50 .background{clip:rect(0, 100px, 200px, 0);}.quiz-result .quiz-result-mark .progress-circle.gt-50 .fill{clip:rect(0, 200px, 200px, 100px);background:#DDD;}.quiz-result .quiz-result-summary{margin-bottom:20px;max-width:500px;}.quiz-result .quiz-result-summary .quiz-result-field{position:relative;background:#F5F5F5;color:#fff;margin:0 0 8px 0;font-size:12px;padding:5px 10px;-webkit-border-radius:4px;-khtml-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;overflow:hidden;}.quiz-result .quiz-result-summary .quiz-result-field span,.quiz-result .quiz-result-summary .quiz-result-field span:after,.quiz-result .quiz-result-summary .quiz-result-field:before{display:block;position:absolute;top:0;left:0;height:100%;content:attr(data-text);color:#FFF;white-space:nowrap;overflow:hidden;padding:3px 10px;background:transparent;transition:width 0.5s;}.quiz-result .quiz-result-summary .quiz-result-field:before{content:'';padding:0;}.quiz-result .quiz-result-summary .quiz-result-field span{padding:0;}.quiz-result .quiz-result-summary .quiz-result-field span:after{margin:3px 10px;padding:0;width:100%;}.quiz-result .quiz-result-summary .quiz-result-field.correct{background:#22b4ff;}.quiz-result .quiz-result-summary .quiz-result-field.wrong{background:#ff5425;}.quiz-result .quiz-result-summary .quiz-result-field.empty{color:#656D6D;}.quiz-result p.quiz-result-time{margin:0 0 10px 0;}.quiz-result .quiz-grade p{margin:0 0 10px 0;}.quiz-result .quiz-grade p span{font-weight:bold;}.quiz-result .quiz-grade p span.passed{color:#22b4ff;}.quiz-result .quiz-grade p span.failed{color:#ff5425;}.single-quiz .quiz-result-field[data-value="0"]:before,.single-quiz .quiz-result-field[data-value="0"] span,#quiz-countdown[data-value="0"]:after{width:0%;}.single-quiz .quiz-result-field[data-value="1"]:before,.single-quiz .quiz-result-field[data-value="1"] span,#quiz-countdown[data-value="1"]:after{width:1%;}.single-quiz .quiz-result-field[data-value="2"]:before,.single-quiz .quiz-result-field[data-value="2"] span,#quiz-countdown[data-value="2"]:after{width:2%;}.single-quiz .quiz-result-field[data-value="3"]:before,.single-quiz .quiz-result-field[data-value="3"] span,#quiz-countdown[data-value="3"]:after{width:3%;}.single-quiz .quiz-result-field[data-value="4"]:before,.single-quiz .quiz-result-field[data-value="4"] span,#quiz-countdown[data-value="4"]:after{width:4%;}.single-quiz .quiz-result-field[data-value="5"]:before,.single-quiz .quiz-result-field[data-value="5"] span,#quiz-countdown[data-value="5"]:after{width:5%;}.single-quiz .quiz-result-field[data-value="6"]:before,.single-quiz .quiz-result-field[data-value="6"] span,#quiz-countdown[data-value="6"]:after{width:6%;}.single-quiz .quiz-result-field[data-value="7"]:before,.single-quiz .quiz-result-field[data-value="7"] span,#quiz-countdown[data-value="7"]:after{width:7%;}.single-quiz .quiz-result-field[data-value="8"]:before,.single-quiz .quiz-result-field[data-value="8"] span,#quiz-countdown[data-value="8"]:after{width:8%;}.single-quiz .quiz-result-field[data-value="9"]:before,.single-quiz .quiz-result-field[data-value="9"] span,#quiz-countdown[data-value="9"]:after{width:9%;}.single-quiz .quiz-result-field[data-value="10"]:before,.single-quiz .quiz-result-field[data-value="10"] span,#quiz-countdown[data-value="10"]:after{width:10%;}.single-quiz .quiz-result-field[data-value="11"]:before,.single-quiz .quiz-result-field[data-value="11"] span,#quiz-countdown[data-value="11"]:after{width:11%;}.single-quiz .quiz-result-field[data-value="12"]:before,.single-quiz .quiz-result-field[data-value="12"] span,#quiz-countdown[data-value="12"]:after{width:12%;}.single-quiz .quiz-result-field[data-value="13"]:before,.single-quiz .quiz-result-field[data-value="13"] span,#quiz-countdown[data-value="13"]:after{width:13%;}.single-quiz .quiz-result-field[data-value="14"]:before,.single-quiz .quiz-result-field[data-value="14"] span,#quiz-countdown[data-value="14"]:after{width:14%;}.single-quiz .quiz-result-field[data-value="15"]:before,.single-quiz .quiz-result-field[data-value="15"] span,#quiz-countdown[data-value="15"]:after{width:15%;}.single-quiz .quiz-result-field[data-value="16"]:before,.single-quiz .quiz-result-field[data-value="16"] span,#quiz-countdown[data-value="16"]:after{width:16%;}.single-quiz .quiz-result-field[data-value="17"]:before,.single-quiz .quiz-result-field[data-value="17"] span,#quiz-countdown[data-value="17"]:after{width:17%;}.single-quiz .quiz-result-field[data-value="18"]:before,.single-quiz .quiz-result-field[data-value="18"] span,#quiz-countdown[data-value="18"]:after{width:18%;}.single-quiz .quiz-result-field[data-value="19"]:before,.single-quiz .quiz-result-field[data-value="19"] span,#quiz-countdown[data-value="19"]:after{width:19%;}.single-quiz .quiz-result-field[data-value="20"]:before,.single-quiz .quiz-result-field[data-value="20"] span,#quiz-countdown[data-value="20"]:after{width:20%;}.single-quiz .quiz-result-field[data-value="21"]:before,.single-quiz .quiz-result-field[data-value="21"] span,#quiz-countdown[data-value="21"]:after{width:21%;}.single-quiz .quiz-result-field[data-value="22"]:before,.single-quiz .quiz-result-field[data-value="22"] span,#quiz-countdown[data-value="22"]:after{width:22%;}.single-quiz .quiz-result-field[data-value="23"]:before,.single-quiz .quiz-result-field[data-value="23"] span,#quiz-countdown[data-value="23"]:after{width:23%;}.single-quiz .quiz-result-field[data-value="24"]:before,.single-quiz .quiz-result-field[data-value="24"] span,#quiz-countdown[data-value="24"]:after{width:24%;}.single-quiz .quiz-result-field[data-value="25"]:before,.single-quiz .quiz-result-field[data-value="25"] span,#quiz-countdown[data-value="25"]:after{width:25%;}.single-quiz .quiz-result-field[data-value="26"]:before,.single-quiz .quiz-result-field[data-value="26"] span,#quiz-countdown[data-value="26"]:after{width:26%;}.single-quiz .quiz-result-field[data-value="27"]:before,.single-quiz .quiz-result-field[data-value="27"] span,#quiz-countdown[data-value="27"]:after{width:27%;}.single-quiz .quiz-result-field[data-value="28"]:before,.single-quiz .quiz-result-field[data-value="28"] span,#quiz-countdown[data-value="28"]:after{width:28%;}.single-quiz .quiz-result-field[data-value="29"]:before,.single-quiz .quiz-result-field[data-value="29"] span,#quiz-countdown[data-value="29"]:after{width:29%;}.single-quiz .quiz-result-field[data-value="30"]:before,.single-quiz .quiz-result-field[data-value="30"] span,#quiz-countdown[data-value="30"]:after{width:30%;}.single-quiz .quiz-result-field[data-value="31"]:before,.single-quiz .quiz-result-field[data-value="31"] span,#quiz-countdown[data-value="31"]:after{width:31%;}.single-quiz .quiz-result-field[data-value="32"]:before,.single-quiz .quiz-result-field[data-value="32"] span,#quiz-countdown[data-value="32"]:after{width:32%;}.single-quiz .quiz-result-field[data-value="33"]:before,.single-quiz .quiz-result-field[data-value="33"] span,#quiz-countdown[data-value="33"]:after{width:33%;}.single-quiz .quiz-result-field[data-value="34"]:before,.single-quiz .quiz-result-field[data-value="34"] span,#quiz-countdown[data-value="34"]:after{width:34%;}.single-quiz .quiz-result-field[data-value="35"]:before,.single-quiz .quiz-result-field[data-value="35"] span,#quiz-countdown[data-value="35"]:after{width:35%;}.single-quiz .quiz-result-field[data-value="36"]:before,.single-quiz .quiz-result-field[data-value="36"] span,#quiz-countdown[data-value="36"]:after{width:36%;}.single-quiz .quiz-result-field[data-value="37"]:before,.single-quiz .quiz-result-field[data-value="37"] span,#quiz-countdown[data-value="37"]:after{width:37%;}.single-quiz .quiz-result-field[data-value="38"]:before,.single-quiz .quiz-result-field[data-value="38"] span,#quiz-countdown[data-value="38"]:after{width:38%;}.single-quiz .quiz-result-field[data-value="39"]:before,.single-quiz .quiz-result-field[data-value="39"] span,#quiz-countdown[data-value="39"]:after{width:39%;}.single-quiz .quiz-result-field[data-value="40"]:before,.single-quiz .quiz-result-field[data-value="40"] span,#quiz-countdown[data-value="40"]:after{width:40%;}.single-quiz .quiz-result-field[data-value="41"]:before,.single-quiz .quiz-result-field[data-value="41"] span,#quiz-countdown[data-value="41"]:after{width:41%;}.single-quiz .quiz-result-field[data-value="42"]:before,.single-quiz .quiz-result-field[data-value="42"] span,#quiz-countdown[data-value="42"]:after{width:42%;}.single-quiz .quiz-result-field[data-value="43"]:before,.single-quiz .quiz-result-field[data-value="43"] span,#quiz-countdown[data-value="43"]:after{width:43%;}.single-quiz .quiz-result-field[data-value="44"]:before,.single-quiz .quiz-result-field[data-value="44"] span,#quiz-countdown[data-value="44"]:after{width:44%;}.single-quiz .quiz-result-field[data-value="45"]:before,.single-quiz .quiz-result-field[data-value="45"] span,#quiz-countdown[data-value="45"]:after{width:45%;}.single-quiz .quiz-result-field[data-value="46"]:before,.single-quiz .quiz-result-field[data-value="46"] span,#quiz-countdown[data-value="46"]:after{width:46%;}.single-quiz .quiz-result-field[data-value="47"]:before,.single-quiz .quiz-result-field[data-value="47"] span,#quiz-countdown[data-value="47"]:after{width:47%;}.single-quiz .quiz-result-field[data-value="48"]:before,.single-quiz .quiz-result-field[data-value="48"] span,#quiz-countdown[data-value="48"]:after{width:48%;}.single-quiz .quiz-result-field[data-value="49"]:before,.single-quiz .quiz-result-field[data-value="49"] span,#quiz-countdown[data-value="49"]:after{width:49%;}.single-quiz .quiz-result-field[data-value="50"]:before,.single-quiz .quiz-result-field[data-value="50"] span,#quiz-countdown[data-value="50"]:after{width:50%;}.single-quiz .quiz-result-field[data-value="51"]:before,.single-quiz .quiz-result-field[data-value="51"] span,#quiz-countdown[data-value="51"]:after{width:51%;}.single-quiz .quiz-result-field[data-value="52"]:before,.single-quiz .quiz-result-field[data-value="52"] span,#quiz-countdown[data-value="52"]:after{width:52%;}.single-quiz .quiz-result-field[data-value="53"]:before,.single-quiz .quiz-result-field[data-value="53"] span,#quiz-countdown[data-value="53"]:after{width:53%;}.single-quiz .quiz-result-field[data-value="54"]:before,.single-quiz .quiz-result-field[data-value="54"] span,#quiz-countdown[data-value="54"]:after{width:54%;}.single-quiz .quiz-result-field[data-value="55"]:before,.single-quiz .quiz-result-field[data-value="55"] span,#quiz-countdown[data-value="55"]:after{width:55%;}.single-quiz .quiz-result-field[data-value="56"]:before,.single-quiz .quiz-result-field[data-value="56"] span,#quiz-countdown[data-value="56"]:after{width:56%;}.single-quiz .quiz-result-field[data-value="57"]:before,.single-quiz .quiz-result-field[data-value="57"] span,#quiz-countdown[data-value="57"]:after{width:57%;}.single-quiz .quiz-result-field[data-value="58"]:before,.single-quiz .quiz-result-field[data-value="58"] span,#quiz-countdown[data-value="58"]:after{width:58%;}.single-quiz .quiz-result-field[data-value="59"]:before,.single-quiz .quiz-result-field[data-value="59"] span,#quiz-countdown[data-value="59"]:after{width:59%;}.single-quiz .quiz-result-field[data-value="60"]:before,.single-quiz .quiz-result-field[data-value="60"] span,#quiz-countdown[data-value="60"]:after{width:60%;}.single-quiz .quiz-result-field[data-value="61"]:before,.single-quiz .quiz-result-field[data-value="61"] span,#quiz-countdown[data-value="61"]:after{width:61%;}.single-quiz .quiz-result-field[data-value="62"]:before,.single-quiz .quiz-result-field[data-value="62"] span,#quiz-countdown[data-value="62"]:after{width:62%;}.single-quiz .quiz-result-field[data-value="63"]:before,.single-quiz .quiz-result-field[data-value="63"] span,#quiz-countdown[data-value="63"]:after{width:63%;}.single-quiz .quiz-result-field[data-value="64"]:before,.single-quiz .quiz-result-field[data-value="64"] span,#quiz-countdown[data-value="64"]:after{width:64%;}.single-quiz .quiz-result-field[data-value="65"]:before,.single-quiz .quiz-result-field[data-value="65"] span,#quiz-countdown[data-value="65"]:after{width:65%;}.single-quiz .quiz-result-field[data-value="66"]:before,.single-quiz .quiz-result-field[data-value="66"] span,#quiz-countdown[data-value="66"]:after{width:66%;}.single-quiz .quiz-result-field[data-value="67"]:before,.single-quiz .quiz-result-field[data-value="67"] span,#quiz-countdown[data-value="67"]:after{width:67%;}.single-quiz .quiz-result-field[data-value="68"]:before,.single-quiz .quiz-result-field[data-value="68"] span,#quiz-countdown[data-value="68"]:after{width:68%;}.single-quiz .quiz-result-field[data-value="69"]:before,.single-quiz .quiz-result-field[data-value="69"] span,#quiz-countdown[data-value="69"]:after{width:69%;}.single-quiz .quiz-result-field[data-value="70"]:before,.single-quiz .quiz-result-field[data-value="70"] span,#quiz-countdown[data-value="70"]:after{width:70%;}.single-quiz .quiz-result-field[data-value="71"]:before,.single-quiz .quiz-result-field[data-value="71"] span,#quiz-countdown[data-value="71"]:after{width:71%;}.single-quiz .quiz-result-field[data-value="72"]:before,.single-quiz .quiz-result-field[data-value="72"] span,#quiz-countdown[data-value="72"]:after{width:72%;}.single-quiz .quiz-result-field[data-value="73"]:before,.single-quiz .quiz-result-field[data-value="73"] span,#quiz-countdown[data-value="73"]:after{width:73%;}.single-quiz .quiz-result-field[data-value="74"]:before,.single-quiz .quiz-result-field[data-value="74"] span,#quiz-countdown[data-value="74"]:after{width:74%;}.single-quiz .quiz-result-field[data-value="75"]:before,.single-quiz .quiz-result-field[data-value="75"] span,#quiz-countdown[data-value="75"]:after{width:75%;}.single-quiz .quiz-result-field[data-value="76"]:before,.single-quiz .quiz-result-field[data-value="76"] span,#quiz-countdown[data-value="76"]:after{width:76%;}.single-quiz .quiz-result-field[data-value="77"]:before,.single-quiz .quiz-result-field[data-value="77"] span,#quiz-countdown[data-value="77"]:after{width:77%;}.single-quiz .quiz-result-field[data-value="78"]:before,.single-quiz .quiz-result-field[data-value="78"] span,#quiz-countdown[data-value="78"]:after{width:78%;}.single-quiz .quiz-result-field[data-value="79"]:before,.single-quiz .quiz-result-field[data-value="79"] span,#quiz-countdown[data-value="79"]:after{width:79%;}.single-quiz .quiz-result-field[data-value="80"]:before,.single-quiz .quiz-result-field[data-value="80"] span,#quiz-countdown[data-value="80"]:after{width:80%;}.single-quiz .quiz-result-field[data-value="81"]:before,.single-quiz .quiz-result-field[data-value="81"] span,#quiz-countdown[data-value="81"]:after{width:81%;}.single-quiz .quiz-result-field[data-value="82"]:before,.single-quiz .quiz-result-field[data-value="82"] span,#quiz-countdown[data-value="82"]:after{width:82%;}.single-quiz .quiz-result-field[data-value="83"]:before,.single-quiz .quiz-result-field[data-value="83"] span,#quiz-countdown[data-value="83"]:after{width:83%;}.single-quiz .quiz-result-field[data-value="84"]:before,.single-quiz .quiz-result-field[data-value="84"] span,#quiz-countdown[data-value="84"]:after{width:84%;}.single-quiz .quiz-result-field[data-value="85"]:before,.single-quiz .quiz-result-field[data-value="85"] span,#quiz-countdown[data-value="85"]:after{width:85%;}.single-quiz .quiz-result-field[data-value="86"]:before,.single-quiz .quiz-result-field[data-value="86"] span,#quiz-countdown[data-value="86"]:after{width:86%;}.single-quiz .quiz-result-field[data-value="87"]:before,.single-quiz .quiz-result-field[data-value="87"] span,#quiz-countdown[data-value="87"]:after{width:87%;}.single-quiz .quiz-result-field[data-value="88"]:before,.single-quiz .quiz-result-field[data-value="88"] span,#quiz-countdown[data-value="88"]:after{width:88%;}.single-quiz .quiz-result-field[data-value="89"]:before,.single-quiz .quiz-result-field[data-value="89"] span,#quiz-countdown[data-value="89"]:after{width:89%;}.single-quiz .quiz-result-field[data-value="90"]:before,.single-quiz .quiz-result-field[data-value="90"] span,#quiz-countdown[data-value="90"]:after{width:90%;}.single-quiz .quiz-result-field[data-value="91"]:before,.single-quiz .quiz-result-field[data-value="91"] span,#quiz-countdown[data-value="91"]:after{width:91%;}.single-quiz .quiz-result-field[data-value="92"]:before,.single-quiz .quiz-result-field[data-value="92"] span,#quiz-countdown[data-value="92"]:after{width:92%;}.single-quiz .quiz-result-field[data-value="93"]:before,.single-quiz .quiz-result-field[data-value="93"] span,#quiz-countdown[data-value="93"]:after{width:93%;}.single-quiz .quiz-result-field[data-value="94"]:before,.single-quiz .quiz-result-field[data-value="94"] span,#quiz-countdown[data-value="94"]:after{width:94%;}.single-quiz .quiz-result-field[data-value="95"]:before,.single-quiz .quiz-result-field[data-value="95"] span,#quiz-countdown[data-value="95"]:after{width:95%;}.single-quiz .quiz-result-field[data-value="96"]:before,.single-quiz .quiz-result-field[data-value="96"] span,#quiz-countdown[data-value="96"]:after{width:96%;}.single-quiz .quiz-result-field[data-value="97"]:before,.single-quiz .quiz-result-field[data-value="97"] span,#quiz-countdown[data-value="97"]:after{width:97%;}.single-quiz .quiz-result-field[data-value="98"]:before,.single-quiz .quiz-result-field[data-value="98"] span,#quiz-countdown[data-value="98"]:after{width:98%;}.single-quiz .quiz-result-field[data-value="99"]:before,.single-quiz .quiz-result-field[data-value="99"] span,#quiz-countdown[data-value="99"]:after{width:99%;}.single-quiz .quiz-result-field[data-value="100"]:before,.single-quiz .quiz-result-field[data-value="100"] span,#quiz-countdown[data-value="100"]:after{width:100%;}.learn-press-question-options{list-style:none;margin:0 0 20px 0;padding:0;}.learn-press-question-options > li.answer-option{font-size:16px;background:#F5F5F5;margin-bottom:20px;position:relative;-webkit-border-radius:4px;-khtml-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.learn-press-question-options > li.answer-option > label{display:block;}.learn-press-question-options > li.answer-option > label input[type="checkbox"],.learn-press-question-options > li.answer-option > label input[type="radio"]{border:0;-webkit-appearance:initial;width:30px;height:30px;background:#fff;border-radius:4px;outline:none;position:absolute;top:10px;left:15px;margin:0;}.learn-press-question-options > li.answer-option > label input[type="checkbox"]:checked:before,.learn-press-question-options > li.answer-option > label input[type="radio"]:checked:before{content:'';border:4px solid #00b9eb;display:inline-block;width:10px;height:15px;border-top:none;border-left:none;position:absolute;top:3px;left:8px;box-sizing:content-box;-webkit-transform:rotate(36deg);-khtml-transform:rotate(36deg);-moz-transform:rotate(36deg);-ms-transform:rotate(36deg);-o-transform:rotate(36deg);transform:rotate(36deg);}.learn-press-question-options > li.answer-option > label input[type="checkbox"]:checked + p,.learn-press-question-options > li.answer-option > label input[type="radio"]:checked + p{font-weight:bold;background:#00b9eb;color:#FFF;}.learn-press-question-options > li.answer-option > label input[type="checkbox"][disabled],.learn-press-question-options > li.answer-option > label input[type="radio"][disabled]{opacity:1;}.learn-press-question-options > li.answer-option > label input[type="radio"]{-webkit-border-radius:50%;-khtml-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%;}.learn-press-question-options > li.answer-option > label p{min-height:50px;padding:5px 20px 5px 60px;margin:0;box-sizing:border-box;line-height:1.5;}.learn-press-question-options > li.answer-option > label p.single-lines{padding:0 20px 0 60px;line-height:50px;}.learn-press-question-options > li.answer-option label p{-webkit-border-radius:4px;-khtml-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.learn-press-question-options > li.answer-option.answer-true label p{background:#00b9eb;color:#FFF;}.learn-press-question-options > li.answer-option:hover label p{background:#D4D4D4;cursor:pointer;}.learn-press-question-options > li.answer-option.user-answer-false{background:#F5F5F5;}.learn-press-question-options > li.answer-option.user-answer-false > label input[type="checkbox"] + p,.learn-press-question-options > li.answer-option.user-answer-false > label input[type="radio"] + p{text-decoration:line-through;color:#FF0000;background:#F5F5F5;}.learn-press-question-options .answer-option-result label p{display:inline-block;margin:0;font-size:smaller;}.learn-press-question-options .answer-option-result label input[disabled]{opacity:1;}.learnpress-content{margin-bottom:20px;}.course-meta{margin-bottom:20px;}.course-meta .course-origin-price{padding-right:5px;text-decoration:line-through;}.course-meta .course-price{font-weight:bold;}.learn-press-message{background:#F5F5F5;border-left:5px solid #00A0D2;padding:10px 20px 1px 20px;margin-bottom:20px;}.learn-press-message button{float:right;}.learn-press-message p{margin-bottom:10px;}.learn-press-message:after{clear:both;content:'';display:block;}.learn-press-message.notice{border-left-color:#b3d20a;}.learn-press-message.error{border-left-color:#b81c23;}.learn-press-message ul{list-style-type:none;}.learn-press-checkout-comment,.learn-press-checkout-payment{margin-bottom:20px;}.learn-press-checkout-payment .payment-methods{list-style:none;margin:0;}.single-quiz .quiz-questions-list{padding:0;}.single-quiz .quiz-intro{list-style:none;padding:10px 20px;background:#F5F5F5;margin:0 0 20px 0;}.single-quiz h4{margin-bottom:10px;font-size:18px;}.learn-press-tooltip{font-size:20px;display:inline-block;vertical-align:middle;background:#0f4956;cursor:pointer;line-height:1;width:10px;height:10px;border-radius:50%;font-weight:700;position:relative;}.learn-press-tooltip:before{content:"?";font-size:7px;color:white;position:absolute;top:2px;left:3px;}.lp-form-field-wrap{list-style:none;margin:0 0 20px 0;}.lp-form-field-wrap .lp-form-field{list-style:none;margin:0 0 20px 0;}.lp-form-field-wrap .lp-form-field .lp-form-field-label{display:block;font-weight:bold;margin-bottom:5px;}.lp-form-field-wrap .lp-form-field .lp-form-field-input .description{font-size:smaller;font-style:italic;margin-top:5px;}.lp-form-field-wrap .lp-form-field .lp-field-error-message{color:#FF0000;}.learn-press-user-profile .lp-edit-profile:after{display:block;content:'';clear:both;}.learn-press-user-profile .lp-edit-profile:after:after{content:'';display:block;clear:both;}.learn-press-user-profile .user-basic-info p{margin-top:10px;}.learn-press-user-profile .learn-press-tabs{list-style:none;margin:30px 0 20px;border-bottom:1px solid #DDD;}.learn-press-user-profile .learn-press-tabs > li{float:left;list-style-type:none;margin-bottom:-1px;}.learn-press-user-profile .learn-press-tabs > li > a{display:inline-block;padding:10px 15px;outline:none;box-shadow:none;color:#686868;border-bottom:1px solid #DDD;}.learn-press-user-profile .learn-press-tabs > li.current{border-bottom:4px solid #007acc;}.learn-press-user-profile .learn-press-tabs > li.current a{color:#007acc;margin-bottom:-4px;}.learn-press-user-profile .learn-press-subtabs > li{display:inline-block;margin-right:10px;}.learn-press-user-profile .learn-press-subtabs > li.current{font-weight:bold;}.learn-press-user-profile .learn-press-subtab-content{display:block;margin-bottom:20px;}.learn-press-user-profile .learn-press-subtab-content.current{display:block;}.learn-press-user-profile .learn-press-subtab-content li.course h3{padding-bottom:10px;}.learn-press-user-profile .learn-press-subtab-content .profile-courses{list-style-type:none;}.learn-press-user-profile .learn-press-subtab-content .profile-courses .learn-press-course-results-progress{padding:0 15px 15px 15px;margin:0;}.learn-press-user-profile button.learn-press-course-wishlist{display:block;}.learn-press-user-profile .user-profile-edit-form .info-field{margin-bottom:20px;}.learn-press-user-profile .user-profile-edit-form .description{margin-top:5px;}.learn-press-user-profile .user-profile-edit-form .user-profile-picture{clear:both;}.learn-press-user-profile .user-profile-edit-form .user-profile-picture .picture,.learn-press-user-profile .user-profile-edit-form .user-profile-picture .change-picture{display:inline-block;}.learn-press-user-profile .user-profile-edit-form .user-profile-picture .change-picture .description{margin:0 0 10px 0;}.learn-press-user-profile .user-profile-edit-form .user-profile-picture img{float:left;margin-right:20px;}.learn-press-user-profile .user-profile-edit-form .user-profile-picture:after{display:block;content:'';clear:both;}.learn-press-user-profile .user-profile-edit-form .user-profile-picture:after:after{content:'';display:block;clear:both;}.learn-press-user-profile .user-profile-edit-form .profile-field-name{font-weight:bold;margin-bottom:10px;}.learn-press-user-profile .user-profile-edit-form .change-password{margin-bottom:10px;}.learn-press-user-profile .user-profile-edit-form #user_profile_password_form input{margin-bottom:20px;}.learn-press-user-profile .user-profile-edit-form #user_profile_password_form .description{margin-top:-15px;}.learn-press-user-profile .update-profile{border-top:2px solid #DDD;padding-top:20px;}.learn-press-user-profile #lp-user-edit-avatar .moxie-shim{display:none;}.learn-press-user-profile #lp-user-edit-avatar .lp-form-field-avatar{float:left;}.learn-press-user-profile #lp-user-edit-avatar #lp-avatar-actions{margin:20px 0;}.learn-press-user-profile .lp-avatar-preview{position:relative;float:left;background-color:#DDD;}.learn-press-user-profile .lp-avatar-preview .profile-picture{float:left;margin-right:-100%;width:100%;}.learn-press-user-profile .lp-avatar-preview .profile-picture img{width:100%;height:100%;border-radius:0;}.learn-press-user-profile .lp-avatar-preview .profile-picture.profile-avatar-hidden{display:none;}.learn-press-user-profile .lp-avatar-preview .lp-avatar-preview-actions{position:absolute;top:50%;width:100%;margin-top:-14px;text-align:center;display:none;}.learn-press-user-profile .lp-avatar-preview .lp-avatar-preview-actions a{text-decoration:none;font-size:12px;background:#FFF;display:inline-block;box-shadow:none;padding:5px 10px;}.learn-press-user-profile .lp-avatar-preview .lp-avatar-upload-progress{position:absolute;height:10px;background:#FFF;top:50%;margin-top:-5px;left:10px;right:10px;display:none;}.learn-press-user-profile .lp-avatar-preview .lp-avatar-upload-progress .lp-avatar-upload-progress-value{width:0;height:10px;background:#563d7c;}.learn-press-user-profile .lp-avatar-preview .lp-avatar-upload-error{display:none;}.learn-press-user-profile .lp-avatar-preview:hover .lp-avatar-preview-actions{display:block;}.learn-press-user-profile .lp-avatar-preview.uploading .lp-avatar-preview-actions,.learn-press-user-profile .lp-avatar-preview.upload-error .lp-avatar-preview-actions{display:none;}.learn-press-user-profile .lp-avatar-preview.uploading .lp-avatar-upload-progress,.learn-press-user-profile .lp-avatar-preview.upload-error .lp-avatar-upload-progress{display:block;}.learn-press-user-profile .lp-avatar-preview.uploading:before,.learn-press-user-profile .lp-avatar-preview.upload-error:before{position:absolute;width:100%;height:100%;background:#FFF;opacity:0.4;content:'';}.learn-press-user-profile .lp-avatar-preview.upload-error .lp-avatar-upload-error{display:block;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-preview-actions{display:none;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-crop-image{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;overflow:hidden;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-crop-image img{max-width:inherit;cursor:move;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-crop-image .lp-crop-controls{position:absolute;bottom:0;width:100%;height:30px;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-crop-image .lp-crop-controls .lp-zoom{position:absolute;height:10px;bottom:10px;left:10px;right:30px;background:#563d7a;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-crop-image .lp-crop-controls .lp-zoom .ui-slider{position:absolute;left:0;right:10px;height:100%;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-crop-image .lp-crop-controls .lp-zoom .ui-slider .ui-slider-handle{display:inline-block;width:10px;height:14px;background:#FFF;position:absolute;margin-top:-2px;border:1px solid #563d7a;box-shadow:none;outline:none;cursor:ew-resize;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-crop-image .lp-crop-controls .lp-cancel-upload{text-decoration:none;position:absolute;bottom:5px;right:5px;box-shadow:none;}.learn-press-user-profile .lp-avatar-preview.croping .lp-avatar-crop-image .lp-crop-controls:before{position:absolute;height:30px;width:100%;content:'';background:#FFF;opacity:0.4;}.learn-press-user-profile .lp-avatar-preview:after{display:block;content:'';clear:both;}.learn-press-user-profile .lp-avatar-preview:after:after{content:'';display:block;clear:both;}body.profile-dragging{cursor:move !important;}body.profile-resizing{cursor:ew-resize !important;}.learn-press-pagination{text-align:center;}.learn-press-pagination ul{list-style:disc;}.learn-press-pagination ul > li{display:inline-block;}.learn-press-pagination ul > li span{display:inline-block;padding:0 10px;border:1px solid #DDD;background-color:#F5F5F5;}.learn-press-pagination ul > li a{display:inline-block;padding:0 10px;border:1px solid #DDD;background-color:#FFF;}.learn-press-become-teacher-form ul{list-style:none;padding:0;}.learn-press-become-teacher-form ul li{margin-bottom:20px;}#popup_container #popup_title{padding:10px 20px;background:#18B6C7;color:#FFF;font-size:18px;margin:0;}#popup_container #popup_content{padding:20px;}#popup_container #popup_content #popup_message{margin-bottom:20px;}#popup_container #popup_panel{text-align:center;}.single-lp_course .course-summary .lp_course .entry-footer{display:none;}.single-lp_course .learn-press-message{clear:both;margin-top:25px;}.learn-press-tooltip-bubble{position:absolute;background:rgba(26, 26, 26, 0.9);color:#ffffff;padding:8px 10px;font-size:12px;z-index:9999999;line-height:1;border-radius:3px;}input.blank-fill-correct{width:auto;}body.content-item-only{background:#FFF;opacity:0;}body.content-item-only .learn-press-content-item-only{position:fixed;z-index:9999999;left:0;top:0;width:100%;height:100%;background:#FFF;overflow:auto;padding:20px;margin:0;}body.content-item-only #learn-press-content-item{border:none;display:block;transition:max-width linear 0.25s;margin:0 auto;max-width:1000px;width:90%;}body.content-item-only #learn-press-content-item.expand{max-width:1200px;}.lp-group-heading-title.toggle-off,.lp-group-heading-title.toggle-on{cursor:pointer;}.lp-group-heading-title.toggle-off .toggle-icon,.lp-group-heading-title.toggle-on .toggle-icon{display:inline-block;font-size:larger;line-height:1;font-weight:bold;margin-left:5px;}.lp-group-heading-title.toggle-off .toggle-icon:before,.lp-group-heading-title.toggle-on .toggle-icon:before{content:'+';}.lp-group-heading-title.toggle-on .toggle-icon:before{content:'-';}.payment-method-form.payment_method_authorizenet{background:#f7f7f7;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;padding-top:25px;}.payment-method-form.payment_method_authorizenet .row-fluid{clear:both;padding-bottom:25px;}.payment-method-form.payment_method_authorizenet .row-fluid .span6:first-child{width:50%;float:left;width:100%;margin-bottom:15px;}.payment-method-form.payment_method_authorizenet .row-fluid .span6:first-child label{margin-left:17px;}.payment-method-form.payment_method_authorizenet .row-fluid .span6:first-child select,.payment-method-form.payment_method_authorizenet .row-fluid .span6:first-child input{margin-left:10px;}.payment-method-form.payment_method_authorizenet .row-fluid .span6 select,.payment-method-form.payment_method_authorizenet .row-fluid .span6 input{padding:8px 0;}.payment-method-form.payment_method_authorizenet .row-fluid .span6 select.required{color:#000;color:#000;}.place-order-action{margin-top:20px;}.woocommerce form .form-row.validate-email,.woocommerce form .form-row.validate-phone{width:100% !important;}.woocommerce .checkout_coupon .form-row-last input.button{padding:13px 10px !important;}.learn-press-search-course-form{margin-bottom:20px;}.learn-press-search-course-form input.search-course-input[name="s"]{margin-right:-200px;width:100%;}.learn-press-search-course-form .search-course-button{vertical-align:middle;float:right;z-index:10;position:relative;}.recent-courses-widget .course-meta-data > div,.popular-courses-widget .course-meta-data > div,.featured-courses-widget .course-meta-data > div{display:inline-block;}.recent-courses-widget .course-meta-data > div:after,.popular-courses-widget .course-meta-data > div:after,.featured-courses-widget .course-meta-data > div:after{content:'/';}.recent-courses-widget .course-meta-data > div:last-child:after,.popular-courses-widget .course-meta-data > div:last-child:after,.featured-courses-widget .course-meta-data > div:last-child:after{content:'';}.recent-courses-widget .course-title,.popular-courses-widget .course-title,.featured-courses-widget .course-title{margin:5px 0;}.recent-courses-widget .course-entry,.popular-courses-widget .course-entry,.featured-courses-widget .course-entry{margin-bottom:20px;}@-moz-keyframes spin-12{0% { -moz-transform:rotate(0deg) translate(0px);}100%{-moz-transform:rotate(360deg) translate(0px);-webkit-transform:rotate(360deg) translate(0px);transform:rotate(360deg) translate(0px);}}@-webkit-keyframes spin-12{0% { -webkit-transform:rotate(0deg) translate(0px);}}@keyframes spin-12{0% { -webkit-transform:rotate(0deg) translate(0px);transform:rotate(0deg) translate(0px);}}@-moz-keyframes spin-13{100% { -moz-transform:rotate(0deg) translate(0px);}0%{-moz-transform:rotate(360deg) translate(0px);-webkit-transform:rotate(360deg) translate(0px);transform:rotate(360deg) translate(0px);}}@-webkit-keyframes spin-13{0% { -webkit-transform:rotate(0deg) translate(0px);}}@keyframes spin-13{100% { -webkit-transform:rotate(0deg) translate(0px);transform:rotate(0deg) translate(0px);}}@media screen and (max-width: 1250px){.single-lp_course .learn-press-course-results-progress .items-progress, .single-lp_course .learn-press-course-results-progress .course-progress { float:none;width:100%;}}@media screen and (max-width: 768px){#learn-press-block-content:before { width: 60px;height:60px;margin-left:-30px;margin-top:-30px;-webkit-clip-path:polygon(0px 60px, 60px 60px, 60px 30px, 30px 30px, 30px 0, 0 0);}.learn-press-course-results-progress .items-progress, .learn-press-course-results-progress .course-progress{width:100%;margin-right:0;}}@media (min-width: 992px){.learn-press-courses li.course:nth-child(4n+1) { clear: left;}}@media (max-width: 992px){.learn-press-courses { margin:0;}}@media (max-width: 992px) and (min-width: 600px){.learn-press-courses li.course { width:31.33%;margin:0 2% 30px 0;}.learn-press-courses li.course:nth-child(3n+1){clear:left;margin-left:0;}}@media (max-width: 600px) and (min-width: 400px){.learn-press-courses li.course { width:48%;margin:0 2% 30px 0;}.learn-press-courses li.course:nth-child(2n+1){clear:left;margin-left:0;}}@media (max-width: 480px){.woocommerce .checkout_coupon .form-row { width:100%;}}@media (max-width: 400px){.learn-press-courses li.course { width:100%;margin:0 0 30px 0;clear:left;}}@media (max-width: 350px){#course-curriculum-popup #popup-sidebar { width:100%;}}@media screen and (min-width: 61.5625em){body.single-lp_course article.lp_course .entry-content { width:100%;}body.single-lp_course article.lp_course .entry-footer{display:none;}}@media screen and (max-width: 615px){.payment-method-form.payment_method_authorizenet .row-fluid { padding-bottom:15px;}.payment-method-form.payment_method_authorizenet .row-fluid .span6 label{margin-left:17px;}.payment-method-form.payment_method_authorizenet .row-fluid .span6 select, .payment-method-form.payment_method_authorizenet .row-fluid .span6 input{margin-left:10px;padding:8px 0;}.payment-method-form.payment_method_authorizenet .row-fluid .span6 #learn-press-authorizenet-payment-expmonth{margin-bottom:10px;}
assets/css/learnpress.css CHANGED
@@ -1796,7 +1796,7 @@ body.block-content #learn-press-block-content {
1796
  .learn-press-message {
1797
  background: #F5F5F5;
1798
  border-left: 5px solid #00A0D2;
1799
- padding: 10px 20px 1px 20px;
1800
  margin-bottom: 20px;
1801
  }
1802
  .learn-press-message button {
1796
  .learn-press-message {
1797
  background: #F5F5F5;
1798
  border-left: 5px solid #00A0D2;
1799
+ padding: 10px 20px 10px 20px;
1800
  margin-bottom: 20px;
1801
  }
1802
  .learn-press-message button {
assets/css/learnpress.less CHANGED
@@ -1309,7 +1309,7 @@ body.block-content {
1309
  .learn-press-message {
1310
  background: #F5F5F5;
1311
  border-left: 5px solid #00A0D2;
1312
- padding: 10px 20px 1px 20px;
1313
  margin-bottom: 20px;
1314
  button {
1315
  float: right;
1309
  .learn-press-message {
1310
  background: #F5F5F5;
1311
  border-left: 5px solid #00A0D2;
1312
+ padding: 10px 20px 10px 20px;
1313
  margin-bottom: 20px;
1314
  button {
1315
  float: right;
inc/admin/dashboard-statistics/class-lp-statistic-status.php CHANGED
@@ -12,10 +12,15 @@ if ( !class_exists( 'LP_Statistic_Status' ) ) :
12
  * @since 2.0
13
  */
14
  public static function render() {
15
- global $lp_order_statuses;
16
- $eduma_data = self::get_eduma_info( 14058034 );
17
- // $total_orders = learn_press_get_orders( array( 'post_status' => array_keys( $lp_order_statuses ) ) );
18
  $specific_statuses = array( 'lp-completed', 'lp-failed', 'lp-on-hold' );
 
 
 
 
 
19
  ?>
20
  <ul class="learnpress-statistic-status">
21
  <li class="full-width">
@@ -26,31 +31,38 @@ if ( !class_exists( 'LP_Statistic_Status' ) ) :
26
  </span>
27
  </a>
28
  </li>
29
- <?php foreach ( $specific_statuses as $status ) : $count = count( learn_press_get_orders( array( 'post_status' => $status ) ) ); ?>
30
- <li>
31
- <a href="<?php echo esc_url( admin_url( 'edit.php?post_status=' . LP_ORDER_CPT . '&post_type=' . $status ) ); ?>" class="<?php echo esc_attr( $status ) ?>">
32
- <span><?php printf( translate_nooped_plural( _n_noop( '%d order', '%d orders' ), $count, 'learnpress' ), $count ) ?></span>
33
- <?php printf( '%s', get_post_status_object( $status )->label ) ?>
34
- </a>
35
- </li>
36
- <?php endforeach; ?>
37
- <?php foreach ( $lp_order_statuses as $status => $args ) : if ( in_array( $status, $specific_statuses ) ) continue;
38
- $count = count( learn_press_get_orders( array( 'post_status' => $status ) ) ); ?>
39
  <li>
40
- <a href="<?php echo esc_url( admin_url( 'edit.php?post_status=' . LP_ORDER_CPT . '&post_type=' . $status ) ); ?>" class="<?php echo esc_attr( $status ) ?>">
41
- <span><?php printf( translate_nooped_plural( _n_noop( '%d order', '%d orders' ), $count, 'learnpress' ), $count ) ?></span>
42
- <?php printf( '%s', get_post_status_object( $status )->label ) ?>
43
- </a>
 
 
 
 
 
 
 
44
  </li>
45
  <?php endforeach; ?>
46
  <li class="full-width featured-theme">
47
- <span><?php _e( 'Featured: ', 'learnpress' ); ?></span>
48
- <a href="<?php echo esc_url( $eduma_data['item']['url'] ) ?>">
49
- <?php echo esc_html( $eduma_data['item']['item'] ) ?>
50
- </a>-
51
- <span class="price"><?php printf( '%s%s', '$', $eduma_data['item']['cost'] ) ?></span>
52
- <span><?php _e( 'Created by: ', 'learnpress' ) ?></span>
53
- <a href="https://thimpress.com/" class="author"><?php echo esc_html( $eduma_data['item']['user'] ); ?></a>
 
 
54
  </li>
55
  </ul>
56
  <?php
12
  * @since 2.0
13
  */
14
  public static function render() {
15
+ $order_statuses = learn_press_get_register_order_statuses();
16
+ $eduma_data = self::get_eduma_info( 14058034 );
17
+ $xx = array_keys( $order_statuses );
18
  $specific_statuses = array( 'lp-completed', 'lp-failed', 'lp-on-hold' );
19
+ foreach ( $xx as $status ) {
20
+ if ( !in_array( $status, $specific_statuses ) ) {
21
+ $specific_statuses[] = $status;
22
+ }
23
+ }
24
  ?>
25
  <ul class="learnpress-statistic-status">
26
  <li class="full-width">
31
  </span>
32
  </a>
33
  </li>
34
+ <?php foreach ( $specific_statuses as $status ) : ?>
35
+ <?php
36
+ $status_object = get_post_status_object( $status );
37
+ if ( !$status_object ) {
38
+ continue;
39
+ }
40
+ $count = count( learn_press_get_orders( array( 'post_status' => $status ) ) );
41
+ ?>
 
 
42
  <li>
43
+ <?php if ( $count ): ?>
44
+ <a href="<?php echo esc_url( admin_url( 'edit.php?post_status=' . LP_ORDER_CPT . '&post_type=' . $status ) ); ?>" class="<?php echo esc_attr( $status ) ?>">
45
+ <span><?php printf( translate_nooped_plural( _n_noop( '%d order', '%d orders' ), $count, 'learnpress' ), $count ) ?></span>
46
+ <?php printf( '%s', $status_object->label ); ?>
47
+ </a>
48
+ <?php else: ?>
49
+ <span class="<?php echo esc_attr( $status ) ?>">
50
+ <span><?php printf( translate_nooped_plural( _n_noop( '%d order', '%d orders' ), $count, 'learnpress' ), $count ) ?></span>
51
+ <?php printf( '%s', $status_object->label ); ?>
52
+ </span>
53
+ <?php endif; ?>
54
  </li>
55
  <?php endforeach; ?>
56
  <li class="full-width featured-theme">
57
+ <p>
58
+ <a href="<?php echo esc_url( $eduma_data['item']['url'] ) ?>">
59
+ <?php echo esc_html( $eduma_data['item']['item'] ) ?>
60
+ </a> - <?php printf( '%s%s', '$', $eduma_data['item']['cost'] ) ?>
61
+ </p>
62
+ <p>
63
+ <?php _e( 'Created by: ', 'learnpress' ) ?>
64
+ <a href="https://thimpress.com/" class="author"><?php echo esc_html( $eduma_data['item']['user'] ); ?></a>
65
+ </p>
66
  </li>
67
  </ul>
68
  <?php
inc/admin/settings/class-lp-settings-courses.php CHANGED
@@ -1,165 +1,176 @@
1
- <?php
2
-
3
- /**
4
- * Class LP_Settings_Courses
5
- */
6
- class LP_Settings_Courses extends LP_Settings_Base {
7
- public function __construct() {
8
- $this->id = 'courses';
9
- $this->text = __( 'Courses', 'learnpress' );
10
-
11
- parent::__construct();
12
- }
13
-
14
- public function _get_sections() {
15
- $sections = array(
16
- 'general' => array(
17
- 'id' => 'general',
18
- 'title' => __( 'General', 'learnpress' )
19
- )
20
- );
21
- return $sections = apply_filters( 'learn_press_settings_sections_' . $this->id, $sections );
22
- }
23
-
24
- public function save() {
25
- parent::save();
26
- $course_permalink = $_POST['learn_press_course_base'];
27
- update_option( 'learn_press_course_base_type', $course_permalink );
28
- if ( $course_permalink == 'custom' ) {
29
- $course_permalink = trim( $_POST['course_permalink_structure'], '/' );
30
-
31
- if ( '%course_category%' == $course_permalink ) {
32
- $course_permalink = _x( 'courses', 'slug', 'learnpress' ) . '/' . $course_permalink;
33
- }
34
-
35
- $course_permalink = '/' . $course_permalink;
36
- } elseif ( empty( $course_permalink ) ) {
37
- $course_permalink = false;
38
- }
39
-
40
- $course_base = untrailingslashit( $course_permalink );
41
-
42
- update_option( 'learn_press_course_base', $course_base );
43
-
44
- $courses_page_id = learn_press_get_page_id( 'courses' );
45
- $courses_permalink = ( $courses_page_id > 0 && get_post( $courses_page_id ) ) ? get_page_uri( $courses_page_id ) : _x( 'courses', 'default-slug', 'learnpress' );
46
-
47
- if ( $courses_page_id && trim( $course_base, '/' ) === $courses_permalink ) {
48
- update_option( 'learn_press_use_verbose_page_rules', 'yes' );
49
- } else {
50
- delete_option( 'learn_press_use_verbose_page_rules' );
51
- }
52
- }
53
-
54
- public function output() {
55
- $view = learn_press_get_admin_view( 'settings/courses.php' );
56
- require_once $view;
57
- }
58
-
59
- public function get_settings() {
60
-
61
- $generate_course_thumbnail = get_option( 'learn_press_generate_course_thumbnail' ) ? get_option( 'learn_press_generate_course_thumbnail' ) : 'no';
62
-
63
- return apply_filters(
64
- 'learn_press_courses_settings',
65
- array(
66
- array(
67
- 'title' => __( 'Courses Page', 'learnpress' ),
68
- 'id' => $this->get_field_name( 'courses_page_id' ),
69
- 'default' => '',
70
- 'type' => 'pages-dropdown'
71
- ),
72
- array(
73
- 'title' => __( 'Course category base', 'learnpress' ),
74
- 'id' => $this->get_field_name( 'course_category_base' ),
75
- 'default' => 'course-category',
76
- 'type' => 'text'
77
- ),
78
- array(
79
- 'title' => __( 'Course tag base', 'learnpress' ),
80
- 'id' => $this->get_field_name( 'course_tag_base' ),
81
- 'default' => 'course-tag',
82
- 'type' => 'text'
83
- ),
84
- array(
85
- 'title' => __( 'Review course before publish', 'learnpress' ),
86
- 'desc' => __( 'The course needs to be reviewed by admin before it can be published.', 'learnpress' ),
87
- 'id' => $this->get_field_name( 'required_review' ),
88
- 'default' => 'yes',
89
- 'type' => 'checkbox'
90
- ),
91
- array(
92
- 'title' => __( 'Enable edit published course', 'learnpress' ),
93
- 'desc' => __( 'Allow instructors to edit the course that are published without review.<br /> If this option is disabled, the course status will be changed to Pending Review when the instructor update course.', 'learnpress' ),
94
- 'id' => $this->get_field_name( 'enable_edit_published' ),
95
- 'default' => 'yes',
96
- 'type' => 'checkbox'
97
- ),
98
- array(
99
- 'title' => __( 'Show list of question in quiz', 'learnpress' ),
100
- 'desc' => __( 'Show/Hide list questions in quiz.', 'learnpress' ),
101
- 'id' => $this->get_field_name( 'disable_question_in_quiz' ),
102
- 'default' => 'yes',
103
- 'type' => 'checkbox'
104
- ),
105
- array(
106
- 'title' => __( 'Archive', 'learnpress' ),
107
- 'type' => 'title'
108
- ),
109
- array(
110
- 'title' => __( 'Courses limit', 'learnpress' ),
111
- 'desc' => __( 'Number of courses displayed per page.', 'learnpress' ),
112
- 'id' => $this->get_field_name( 'archive_course_limit' ),
113
- 'default' => '10',
114
- 'type' => 'number',
115
- 'custom_attributes' => array(
116
- 'min' => '1'
117
- )
118
- ),
119
- array(
120
- 'title' => __( 'Course thumbnail', 'learnpress' ),
121
- 'type' => 'title'
122
- ),
123
- array(
124
- 'title' => __( 'Extra thumbnail', 'learnpress' ),
125
- 'id' => $this->get_field_name( 'generate_course_thumbnail' ),
126
- 'default' => 'yes',
127
- 'type' => 'checkbox',
128
- 'desc' => __( 'Turn on/off courses extra thumbnail', 'learnpress' ),
129
- ),
130
- array(
131
- 'title' => __( 'Single course', 'learnpress' ),
132
- 'id' => $this->get_field_name( 'single_course_image_size' ),
133
- 'default' => array( 800, 450, 'yes' ),
134
- 'type' => 'image-size',
135
- 'class' => 'single-course-thumbnail' . ( ( $generate_course_thumbnail == 'no' ) ? ' hide-if-js' : '' )
136
- ),
137
- array(
138
- 'title' => __( 'Courses page', 'learnpress' ),
139
- 'id' => $this->get_field_name( 'course_thumbnail_image_size' ),
140
- 'default' => array( 400, 250, 'yes' ),
141
- 'type' => 'image-size',
142
- 'class' => 'archive-course-thumbnail' . ( ( $generate_course_thumbnail == 'no' ) ? ' hide-if-js' : '' )
143
- ),
144
- array(
145
- 'title' => __( 'Single course permalink', 'learnpress' ),
146
- 'type' => 'title'
147
- ),
148
- array(
149
- 'title' => __( 'Single course permalink', 'learnpress' ),
150
- 'type' => 'course-permalink',
151
- 'default' => ''
152
- )/*,
153
- array(
154
- 'title' => __( 'Auto navigation item', 'learnpress' ),
155
- 'type' => 'auto_nav_course_item',
156
- 'default' => 'yes',
157
- 'type' => 'checkbox',
158
- 'desc' => __( 'Navigate to next item after user complete', 'learnpress' )
159
- )*/
160
- )
161
- );
162
- }
163
- }
164
-
 
 
 
 
 
 
 
 
 
 
 
165
  return new LP_Settings_Courses();
1
+ <?php
2
+
3
+ /**
4
+ * Class LP_Settings_Courses
5
+ */
6
+ class LP_Settings_Courses extends LP_Settings_Base {
7
+ public function __construct() {
8
+ $this->id = 'courses';
9
+ $this->text = __( 'Courses', 'learnpress' );
10
+
11
+ parent::__construct();
12
+ }
13
+
14
+ public function _get_sections() {
15
+ $sections = array(
16
+ 'general' => array(
17
+ 'id' => 'general',
18
+ 'title' => __( 'General', 'learnpress' )
19
+ )
20
+ );
21
+ return $sections = apply_filters( 'learn_press_settings_sections_' . $this->id, $sections );
22
+ }
23
+
24
+ public function save() {
25
+ parent::save();
26
+ $course_permalink = $_POST['learn_press_course_base'];
27
+ update_option( 'learn_press_course_base_type', $course_permalink );
28
+ if ( $course_permalink == 'custom' ) {
29
+ $course_permalink = trim( $_POST['course_permalink_structure'], '/' );
30
+
31
+ if ( '%course_category%' == $course_permalink ) {
32
+ $course_permalink = _x( 'courses', 'slug', 'learnpress' ) . '/' . $course_permalink;
33
+ }
34
+
35
+ $course_permalink = '/' . $course_permalink;
36
+ } elseif ( empty( $course_permalink ) ) {
37
+ $course_permalink = false;
38
+ }
39
+
40
+ $course_base = untrailingslashit( $course_permalink );
41
+
42
+ update_option( 'learn_press_course_base', $course_base );
43
+
44
+ $courses_page_id = learn_press_get_page_id( 'courses' );
45
+ $courses_permalink = ( $courses_page_id > 0 && get_post( $courses_page_id ) ) ? get_page_uri( $courses_page_id ) : _x( 'courses', 'default-slug', 'learnpress' );
46
+
47
+ if ( $courses_page_id && trim( $course_base, '/' ) === $courses_permalink ) {
48
+ update_option( 'learn_press_use_verbose_page_rules', 'yes' );
49
+ } else {
50
+ delete_option( 'learn_press_use_verbose_page_rules' );
51
+ }
52
+ }
53
+
54
+ public function output() {
55
+ $view = learn_press_get_admin_view( 'settings/courses.php' );
56
+ require_once $view;
57
+ }
58
+
59
+ public function get_settings() {
60
+
61
+ $generate_course_thumbnail = get_option( 'learn_press_generate_course_thumbnail' ) ? get_option( 'learn_press_generate_course_thumbnail' ) : 'no';
62
+
63
+ return apply_filters(
64
+ 'learn_press_courses_settings',
65
+ array(
66
+ array(
67
+ 'title' => __( 'Courses Page', 'learnpress' ),
68
+ 'id' => $this->get_field_name( 'courses_page_id' ),
69
+ 'default' => '',
70
+ 'type' => 'pages-dropdown'
71
+ ),
72
+ array(
73
+ 'title' => __( 'Course category base', 'learnpress' ),
74
+ 'id' => $this->get_field_name( 'course_category_base' ),
75
+ 'default' => 'course-category',
76
+ 'type' => 'text'
77
+ ),
78
+ array(
79
+ 'title' => __( 'Course tag base', 'learnpress' ),
80
+ 'id' => $this->get_field_name( 'course_tag_base' ),
81
+ 'default' => 'course-tag',
82
+ 'type' => 'text'
83
+ ),
84
+ array(
85
+ 'title' => __( 'Review course before publish', 'learnpress' ),
86
+ 'desc' => __( 'The course needs to be reviewed by admin before it can be published.', 'learnpress' ),
87
+ 'id' => $this->get_field_name( 'required_review' ),
88
+ 'default' => 'yes',
89
+ 'type' => 'checkbox'
90
+ ),
91
+ array(
92
+ 'title' => __( 'Enable edit published course', 'learnpress' ),
93
+ 'desc' => __( 'Allow instructors to edit the course that are published without review.<br /> If this option is disabled, the course status will be changed to Pending Review when the instructor update course.', 'learnpress' ),
94
+ 'id' => $this->get_field_name( 'enable_edit_published' ),
95
+ 'default' => 'yes',
96
+ 'type' => 'checkbox'
97
+ ),
98
+ array(
99
+ 'title' => __( 'Show list of question in quiz', 'learnpress' ),
100
+ 'desc' => __( 'Show/Hide list questions in quiz.', 'learnpress' ),
101
+ 'id' => $this->get_field_name( 'disable_question_in_quiz' ),
102
+ 'default' => 'yes',
103
+ 'type' => 'checkbox'
104
+ ),
105
+ array(
106
+ 'title' => __( 'Archive', 'learnpress' ),
107
+ 'type' => 'title'
108
+ ),
109
+ array(
110
+ 'title' => __( 'Courses limit', 'learnpress' ),
111
+ 'desc' => __( 'Number of courses displayed per page.', 'learnpress' ),
112
+ 'id' => $this->get_field_name( 'archive_course_limit' ),
113
+ 'default' => '10',
114
+ 'type' => 'number',
115
+ 'custom_attributes' => array(
116
+ 'min' => '1'
117
+ )
118
+ ),
119
+ array(
120
+ 'title' => __( 'Course thumbnail', 'learnpress' ),
121
+ 'type' => 'title'
122
+ ),
123
+ array(
124
+ 'title' => __( 'Extra thumbnail', 'learnpress' ),
125
+ 'id' => $this->get_field_name( 'generate_course_thumbnail' ),
126
+ 'default' => 'yes',
127
+ 'type' => 'checkbox',
128
+ 'desc' => __( 'Turn on/off courses extra thumbnail', 'learnpress' ),
129
+ ),
130
+ array(
131
+ 'title' => __( 'Single course', 'learnpress' ),
132
+ 'id' => $this->get_field_name( 'single_course_image_size' ),
133
+ 'default' => array( 800, 450, 'yes' ),
134
+ 'type' => 'image-size',
135
+ 'class' => 'single-course-thumbnail' . ( ( $generate_course_thumbnail == 'no' ) ? ' hide-if-js' : '' )
136
+ ),
137
+ array(
138
+ 'title' => __( 'Courses page', 'learnpress' ),
139
+ 'id' => $this->get_field_name( 'course_thumbnail_image_size' ),
140
+ 'default' => array( 400, 250, 'yes' ),
141
+ 'type' => 'image-size',
142
+ 'class' => 'archive-course-thumbnail' . ( ( $generate_course_thumbnail == 'no' ) ? ' hide-if-js' : '' )
143
+ ),
144
+ array(
145
+ 'title' => __( 'Single course permalink', 'learnpress' ),
146
+ 'type' => 'title'
147
+ ),
148
+ array(
149
+ 'title' => __( 'Single course permalink', 'learnpress' ),
150
+ 'type' => 'course-permalink',
151
+ 'default' => ''
152
+ ),
153
+ array(
154
+ 'title' => __( 'Course item slug', 'learnpress' ),
155
+ 'type' => 'title'
156
+ ),
157
+ array(
158
+ 'title' => __( 'Lesson', 'learnpress' ),
159
+ 'type' => 'text',
160
+ 'id' => $this->get_field_name( 'lesson_slug' ),
161
+ 'desc' => __( sprintf( '%s/course/sample-course/<code>lessons</code>/sample-lesson/', home_url() ), 'learnpress' ),
162
+ 'default' => 'lessons'
163
+ ),
164
+ array(
165
+ 'title' => __( 'Quiz', 'learnpress' ),
166
+ 'type' => 'text',
167
+ 'id' => $this->get_field_name( 'quiz_slug' ),
168
+ 'desc' => __( sprintf( '%s/course/sample-course/<code>quizzes</code>/sample-lesson/', home_url() ), 'learnpress' ),
169
+ 'default' => 'quizzes'
170
+ )
171
+ )
172
+ );
173
+ }
174
+ }
175
+
176
  return new LP_Settings_Courses();
inc/admin/views/settings/emails/email-template.php CHANGED
@@ -72,8 +72,10 @@ $email_format = $settings->get( 'emails_' . $this->id . '.email_format', 'plain_
72
  </div>
73
 
74
  <?php if ( !$has_local_file ): ?>
75
- <?php if ( $this->support_variables ): ?>
76
- <p><strong><?php esc_html_e( 'Click on variables to add it into email content', 'learnpress' ); ?></strong></p>
 
 
77
  <ol class="learn-press-email-variables<?php echo $template_type == 'html' ? ' has-editor' : ''; ?>" data-target="<?php echo esc_attr( 'learn_press_emails_' . $this->id . '_' . $template_type ); ?>">
78
  <?php foreach ( $this->support_variables as $variable ): ?>
79
  <li data-variable="<?php echo esc_attr( $variable ); ?>">
72
  </div>
73
 
74
  <?php if ( !$has_local_file ): ?>
75
+ <?php if ( $this->get_variables_support() ): ?>
76
+ <p>
77
+ <strong><?php esc_html_e( 'Click on variables to add it into email content', 'learnpress' ); ?></strong>
78
+ </p>
79
  <ol class="learn-press-email-variables<?php echo $template_type == 'html' ? ' has-editor' : ''; ?>" data-target="<?php echo esc_attr( 'learn_press_emails_' . $this->id . '_' . $template_type ); ?>">
80
  <?php foreach ( $this->support_variables as $variable ): ?>
81
  <li data-variable="<?php echo esc_attr( $variable ); ?>">
inc/class-lp-emails.php CHANGED
@@ -138,10 +138,8 @@ class LP_Emails {
138
  if ( !$user = learn_press_get_user( $user_id ) ) {
139
  return;
140
  }
141
- if ( $user->is_admin() ) {
142
- $mail = $this->emails['LP_Email_Finished_Course'];
143
- $mail->trigger( $course_id, $user->id, $result );
144
- }
145
  }
146
 
147
  /**
138
  if ( !$user = learn_press_get_user( $user_id ) ) {
139
  return;
140
  }
141
+ $mail = $this->emails['LP_Email_Finished_Course'];
142
+ $mail->trigger( $course_id, $user->id, $result );
 
 
143
  }
144
 
145
  /**
inc/class-lp-page-controller.php CHANGED
@@ -73,7 +73,7 @@ class LP_Page_Controller {
73
  }*/
74
 
75
  public function template_loader( $template ) {
76
- global $wp_query, $post;
77
  $file = '';
78
  $find = array();
79
  $theme_template = learn_press_template_path();
@@ -85,6 +85,19 @@ class LP_Page_Controller {
85
  if ( is_post_type_archive( 'lp_course' ) ) {
86
  if ( ( $page_id = learn_press_get_page_id( 'courses' ) ) && ( empty( $wp_query->queried_object_id ) || !empty( $wp_query->queried_object_id ) && $page_id != $wp_query->queried_object_id ) ) {
87
  $redirect = trailingslashit( learn_press_get_page_link( 'courses' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  // Prevent loop redirect
89
  if ( $page_id != get_option( 'page_on_front' ) && !learn_press_is_current_url( $redirect ) ) {
90
  wp_redirect( $redirect );
@@ -127,6 +140,7 @@ class LP_Page_Controller {
127
  $file = 'archive-course.php';
128
  $find[] = $file;
129
  $find[] = "{$theme_template}/{$file}";
 
130
  } else {
131
  if ( learn_press_is_course() ) {
132
  $file = 'single-course.php';
@@ -241,6 +255,7 @@ class LP_Page_Controller {
241
  $wp_query->is_singular = false;
242
  $wp_query->is_posts_page = false;
243
  $wp_query->is_post_type_archive = false;
 
244
  }
245
  return $template;
246
  }
@@ -255,6 +270,7 @@ class LP_Page_Controller {
255
  if ( LP_COURSE_CPT != get_post_type() ) {
256
  return $content;
257
  }
 
258
  remove_filter( 'the_content', array( $this, 'single_content' ), $this->_filter_content_priority );
259
  add_filter( 'the_content', 'wpautop' );
260
  ob_start();
@@ -286,12 +302,12 @@ class LP_Page_Controller {
286
 
287
  $this->queried_object = !empty( $q->queried_object_id ) ? $q->queried_object : false;
288
 
 
289
  /**
290
  * If is single course content
291
  */
292
  if ( $q->get( 'post_type' ) == 'lp_course' && is_single() ) {
293
  global $post;
294
-
295
  /**
296
  * Added in LP 2.0.5 to fix issue in some cases course become 404
297
  * including case course link is valid but it also get 404 if
@@ -388,9 +404,6 @@ class LP_Page_Controller {
388
 
389
  $q->set( 'post_type', 'lp_course' );
390
  $q->set( 'page_id', '' );
391
- if ( isset( $q->query['paged'] ) ) {
392
- $q->set( 'paged', $q->query['paged'] );
393
- }
394
 
395
  global $wp_post_types;
396
 
@@ -413,6 +426,10 @@ class LP_Page_Controller {
413
  $q->set( 'posts_per_page', $limit );
414
  }
415
 
 
 
 
 
416
  add_action( 'pre_get_posts', array( $this, 'pre_get_posts' ), 10 );
417
 
418
  return $q;
73
  }*/
74
 
75
  public function template_loader( $template ) {
76
+ global $wp_query, $post, $wp_rewrite;
77
  $file = '';
78
  $find = array();
79
  $theme_template = learn_press_template_path();
85
  if ( is_post_type_archive( 'lp_course' ) ) {
86
  if ( ( $page_id = learn_press_get_page_id( 'courses' ) ) && ( empty( $wp_query->queried_object_id ) || !empty( $wp_query->queried_object_id ) && $page_id != $wp_query->queried_object_id ) ) {
87
  $redirect = trailingslashit( learn_press_get_page_link( 'courses' ) );
88
+
89
+ if ( !empty( $wp_query->query['paged'] ) ) {
90
+ if ( $wp_rewrite->using_permalinks() ) {
91
+ $redirect = $redirect . 'page/' . $wp_query->query['paged'];
92
+ } else {
93
+ $redirect = add_query_arg( 'paged', $wp_query->query['paged'], $redirect );
94
+ }
95
+ }
96
+ if ( $_GET ) {
97
+ foreach ( $_GET as $k => $v ) {
98
+ $redirect = add_query_arg( $k, urlencode( $v ), $redirect );
99
+ }
100
+ }
101
  // Prevent loop redirect
102
  if ( $page_id != get_option( 'page_on_front' ) && !learn_press_is_current_url( $redirect ) ) {
103
  wp_redirect( $redirect );
140
  $file = 'archive-course.php';
141
  $find[] = $file;
142
  $find[] = "{$theme_template}/{$file}";
143
+
144
  } else {
145
  if ( learn_press_is_course() ) {
146
  $file = 'single-course.php';
255
  $wp_query->is_singular = false;
256
  $wp_query->is_posts_page = false;
257
  $wp_query->is_post_type_archive = false;
258
+
259
  }
260
  return $template;
261
  }
270
  if ( LP_COURSE_CPT != get_post_type() ) {
271
  return $content;
272
  }
273
+
274
  remove_filter( 'the_content', array( $this, 'single_content' ), $this->_filter_content_priority );
275
  add_filter( 'the_content', 'wpautop' );
276
  ob_start();
302
 
303
  $this->queried_object = !empty( $q->queried_object_id ) ? $q->queried_object : false;
304
 
305
+ global $wp, $wp_rewrite;
306
  /**
307
  * If is single course content
308
  */
309
  if ( $q->get( 'post_type' ) == 'lp_course' && is_single() ) {
310
  global $post;
 
311
  /**
312
  * Added in LP 2.0.5 to fix issue in some cases course become 404
313
  * including case course link is valid but it also get 404 if
404
 
405
  $q->set( 'post_type', 'lp_course' );
406
  $q->set( 'page_id', '' );
 
 
 
407
 
408
  global $wp_post_types;
409
 
426
  $q->set( 'posts_per_page', $limit );
427
  }
428
 
429
+ if ( isset( $q->query['page'] ) ) {
430
+ $q->set( 'paged', $q->query['page'] );
431
+ }
432
+
433
  add_action( 'pre_get_posts', array( $this, 'pre_get_posts' ), 10 );
434
 
435
  return $q;
inc/class-lp-query.php CHANGED
@@ -1,482 +1,507 @@
1
- <?php
2
-
3
- /**
4
- * Class LP_Query
5
- */
6
-
7
- defined( 'ABSPATH' ) || exit;
8
-
9
- class LP_Query {
10
- /**
11
- * @var array
12
- */
13
- public $query_vars = array();
14
-
15
- /**
16
- * LP_Query constructor.
17
- */
18
- public function __construct() {
19
- add_action( 'init', array( $this, 'add_rewrite_tags' ), 1000, 0 );
20
- add_action( 'init', array( $this, 'add_rewrite_rules' ), 1000, 0 );
21
- add_action( 'parse_query', array( $this, 'parse_request' ), 1000, 1 );
22
- /**
23
- * Add searching post by taxonomies
24
- */
25
- add_action( 'pre_get_posts', array( $this, 'query_taxonomy' ) );
26
- }
27
-
28
- /**
29
- * Parses request params and controls page
30
- *
31
- * @param WP_Query $q
32
- *
33
- * @return mixed
34
- */
35
- public function parse_request( $q ) {
36
- if ( did_action( 'learn_press_parse_query' ) ) {
37
- return $q;
38
- }
39
- $user = learn_press_get_current_user();
40
- $request = $this->get_request();
41
- if ( !$request || is_admin() ) {
42
- return $q;
43
- }
44
- remove_filter( 'do_parse_request', array( $this, 'get_current_quiz_question' ), 1010, 3 );
45
- $course_type = 'lp_course';
46
- $post_types = get_post_types( '', 'objects' );
47
-
48
- if ( empty( $post_types[$course_type] ) ) {
49
- return;
50
- }
51
- /********************/
52
- if ( empty( $q->query_vars[LP_COURSE_CPT] ) ) {
53
- return;
54
- }
55
- $this->query_vars['course'] = $q->query_vars[LP_COURSE_CPT];
56
- $course_id = learn_press_setup_course_data( $this->query_vars['course'] );
57
- $quiz_name = '';
58
- $question_name = '';
59
- $lesson_name = '';
60
- if ( !empty( $q->query_vars['quiz'] ) ) {
61
- $quiz_name = $this->query_vars['quiz'] = $q->query_vars['quiz'];
62
- $this->query_vars['item_type'] = LP_QUIZ_CPT;
63
- if ( !empty( $q->query_vars['question'] ) ) {
64
- $question_name = $this->query_vars['question'] = $q->query_vars['question'];
65
- }
66
- } elseif ( !empty( $q->query_vars['lesson'] ) ) {
67
- $lesson_name = $this->query_vars['lesson'] = $q->query_vars['lesson'];
68
- $this->query_vars['item_type'] = LP_LESSON_CPT;
69
- }
70
- if ( $quiz_name && $question_name ) {
71
- if ( $quiz = learn_press_get_post_by_name( $quiz_name, LP_QUIZ_CPT ) ) {
72
- if ( $user->has_quiz_status( 'completed', $quiz->ID, $course_id ) ) {
73
- //remove question name from uri
74
- $course = learn_press_get_course( $course_id );
75
- $redirect = $course->get_item_link( $quiz->ID );// get_site_url() . '/' . dirname( $request_match );
76
- wp_redirect( $redirect );
77
- exit();
78
- }
79
- if ( $question = learn_press_get_post_by_name( $question_name, 'lp_question' ) ) {
80
- global $wpdb;
81
- $query = $wpdb->prepare( "
82
- SELECT MAX(user_item_id)
83
- FROM {$wpdb->prefix}learnpress_user_items
84
- WHERE user_id = %d AND item_id = %d AND item_type = %s and status <> %s
85
- ", learn_press_get_current_user_id(), $quiz->ID, 'lp_quiz', 'completed' );
86
- if ( $history_id = $wpdb->get_var( $query ) ) {
87
- learn_press_update_user_item_meta( $history_id, 'current_question', $question->ID );
88
- }
89
- }
90
- }
91
- }
92
- $this->query_vars['course_id'] = $course_id;
93
- do_action_ref_array( 'learn_press_parse_query', array( &$this ) );
94
-
95
- return $q;
96
- /************************/
97
- $slug = preg_replace( '!^/!', '', $post_types[$course_type]->rewrite['slug'] );
98
-
99
- $match = '^' . $slug . '/([^/]*)/(' . $post_types['lp_quiz']->rewrite['slug'] . ')?/([^/]*)?/?([^/]*)?';
100
-
101
- $request_match = $request;
102
- $course_id = 0;
103
- if ( !empty( $q->query_vars['post_type'] ) && $q->query_vars['post_type'] == LP_COURSE_CPT ) {
104
- if ( !empty( $q->query_vars[LP_COURSE_CPT] ) ) {
105
- $this->query_vars['course'] = $q->query_vars[LP_COURSE_CPT];
106
- $course_id = learn_press_setup_course_data( $this->query_vars['course'] );
107
- }
108
- if ( !empty( $q->query_vars['quiz'] ) ) {
109
- $this->query_vars['quiz'] = $q->query_vars['quiz'];
110
- $this->query_vars['item_type'] = LP_QUIZ_CPT;
111
- } elseif ( !empty( $q->query_vars['lesson'] ) ) {
112
- $this->query_vars['lesson'] = $q->query_vars['lesson'];
113
- $this->query_vars['item_type'] = LP_LESSON_CPT;
114
- }
115
- }
116
-
117
- /**
118
- * Match request URI with quiz permalink
119
- */
120
- if ( preg_match( "#^$match#", $request_match, $matches ) || preg_match( "#^$match#", urldecode( $request_match ), $matches ) ) {
121
-
122
- // If request URI is a quiz permalink
123
- if ( !empty( $matches[3] ) ) {
124
- if ( !$post = learn_press_get_post_by_name( $matches[3], 'lp_quiz', true ) ) {
125
- return $q;
126
- }
127
- // If request URI does not contains a question
128
- // Try to get current question of current user and put it into URI
129
- if ( empty( $matches[4] ) ) {
130
- if ( $user->has_quiz_status( 'started', $post->ID, $course_id ) && $question_id = $user->get_current_quiz_question( $post->ID, $course_id ) ) {
131
- $this->query_vars['question'] = $q->query_vars['question'] = get_post_field( 'post_name', $question_id );
132
- }
133
- } else {
134
- // If user is viewing a question then update current question for user
135
- $question = learn_press_get_post_by_name( $matches[4], 'lp_question' );
136
- /**
137
- * If user has completed a quiz but they are accessing to a question inside quiz,
138
- * redirect them back to quiz to show results of that quiz instead
139
- */
140
- if ( $user->has_quiz_status( 'completed', $post->ID, $course_id ) ) {
141
- //remove question name from uri
142
- $redirect = get_site_url() . '/' . dirname( $request_match );
143
- wp_redirect( $redirect );
144
- exit();
145
- }
146
- if ( $question ) {
147
- global $wpdb;
148
- $query = $wpdb->prepare( "
149
- SELECT MAX(user_item_id)
150
- FROM {$wpdb->prefix}learnpress_user_items
151
- WHERE user_id = %d AND item_id = %d AND item_type = %s and status <> %s
152
- ", learn_press_get_current_user_id(), $post->ID, 'lp_quiz', 'completed' );
153
- if ( $history_id = $wpdb->get_var( $query ) ) {
154
- learn_press_update_user_item_meta( $history_id, 'current_question', $question->ID );
155
- }
156
- }
157
- }
158
- }
159
- }
160
- $this->query_vars['course_id'] = $course_id;
161
- do_action_ref_array( 'learn_press_parse_query', array( &$this ) );
162
- return $q;
163
- }
164
-
165
- /**
166
- * This function is cloned from wp core function
167
- *
168
- * @see WP()->parse_request()
169
- *
170
- * @return string
171
- */
172
- public function get_request() {
173
- global $wp_rewrite;
174
- $pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';
175
- list( $pathinfo ) = explode( '?', $pathinfo );
176
- $pathinfo = str_replace( "%", "%25", $pathinfo );
177
-
178
- list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );
179
- $self = $_SERVER['PHP_SELF'];
180
- $home_path = trim( parse_url( home_url(), PHP_URL_PATH ), '/' );
181
- $home_path_regex = sprintf( '|^%s|i', preg_quote( $home_path, '|' ) );
182
-
183
- // Trim path info from the end and the leading home path from the
184
- // front. For path info requests, this leaves us with the requesting
185
- // filename, if any. For 404 requests, this leaves us with the
186
- // requested permalink.
187
- $req_uri = str_replace( $pathinfo, '', $req_uri );
188
- $req_uri = trim( $req_uri, '/' );
189
- $req_uri = preg_replace( $home_path_regex, '', $req_uri );
190
- $req_uri = trim( $req_uri, '/' );
191
- $pathinfo = trim( $pathinfo, '/' );
192
- $pathinfo = preg_replace( $home_path_regex, '', $pathinfo );
193
- $pathinfo = trim( $pathinfo, '/' );
194
- $self = trim( $self, '/' );
195
- $self = preg_replace( $home_path_regex, '', $self );
196
- $self = trim( $self, '/' );
197
-
198
- // The requested permalink is in $pathinfo for path info requests and
199
- // $req_uri for other requests.
200
- if ( !empty( $pathinfo ) && !preg_match( '|^.*' . $wp_rewrite->index . '$|', $pathinfo ) ) {
201
- $request = $pathinfo;
202
- } else {
203
- // If the request uri is the index, blank it out so that we don't try to match it against a rule.
204
- if ( $req_uri == $wp_rewrite->index )
205
- $req_uri = '';
206
- $request = $req_uri;
207
- }
208
- return $request;
209
- }
210
-
211
- /**
212
- * Add custom rewrite tags
213
- */
214
- function add_rewrite_tags() {
215
- add_rewrite_tag( '%lesson%', '([^&]+)' );
216
- add_rewrite_tag( '%quiz%', '([^&]+)' );
217
- add_rewrite_tag( '%question%', '([^&]+)' );
218
- add_rewrite_tag( '%user%', '([^/]*)' );
219
- add_rewrite_tag( '%course-query-string%', '(.*)' );
220
- do_action( 'learn_press_add_rewrite_tags' );
221
- }
222
-
223
- /**
224
- * Add more custom rewrite rules
225
- */
226
- function add_rewrite_rules() {
227
-
228
- $rewrite_prefix = get_option( 'learn_press_permalink_structure' );
229
- // lesson
230
- $course_type = 'lp_course';
231
- $post_types = get_post_types( '', 'objects' );
232
- $slug = preg_replace( '!^/!', '', $post_types[$course_type]->rewrite['slug'] );
233
- $has_category = false;
234
- if ( preg_match( '!(%?course_category%?)!', $slug ) ) {
235
- $slug = preg_replace( '!(%?course_category%?)!', '(.+?)/([^/]+)', $slug );
236
- $has_category = true;
237
- }
238
- $current_url = learn_press_get_current_url();
239
- $query_string = str_replace( trailingslashit( get_site_url() ), '', $current_url );
240
-
241
- if ( $has_category ) {
242
- add_rewrite_rule(
243
- '^' . $slug . '(?:/' . $post_types['lp_lesson']->rewrite['slug'] . '/([^/]+))/?$',
244
- 'index.php?' . $course_type . '=$matches[2]&course_category=$matches[1]&lesson=$matches[3]',
245
- 'top'
246
- );
247
- add_rewrite_rule(
248
- '^' . $slug . '(?:/' . $post_types['lp_quiz']->rewrite['slug'] . '/([^/]+)/?([^/]+)?)/?$',
249
- 'index.php?' . $course_type . '=$matches[2]&course_category=$matches[1]&quiz=$matches[3]&question=$matches[4]',
250
- 'top'
251
- );
252
- } else {
253
- add_rewrite_rule(
254
- '^' . $slug . '/([^/]+)(?:/' . $post_types['lp_lesson']->rewrite['slug'] . '/([^/]+))/?$',
255
- 'index.php?' . $course_type . '=$matches[1]&lesson=$matches[2]',
256
- 'top'
257
- );
258
- add_rewrite_rule(
259
- '^' . $slug . '/([^/]+)(?:/' . $post_types['lp_quiz']->rewrite['slug'] . '/([^/]+)/?([^/]+)?)/?$',
260
- 'index.php?' . $course_type . '=$matches[1]&quiz=$matches[2]&question=$matches[3]',
261
- 'top'
262
- );
263
- }
264
-
265
- if ( $profile_id = learn_press_get_page_id( 'profile' ) ) {
266
- add_rewrite_rule(
267
- '^' . $rewrite_prefix . get_post_field( 'post_name', $profile_id ) . '/([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?',
268
- 'index.php?page_id=' . $profile_id . '&user=$matches[1]&view=$matches[2]&id=$matches[3]&paged=$matches[4]',
269
- 'top'
270
- );
271
- }
272
- do_action( 'learn_press_add_rewrite_rules' );
273
- return;
274
-
275
- /**
276
- * Lesson permalink without category
277
- */
278
- /*add_rewrite_rule(
279
- '^' . $slug . '/([^/]*)/(' . $post_types['lp_lesson']->rewrite['slug'] . ')/([^/]+)/?$',
280
- 'index.php?' . $course_type . '=$matches[1]&lesson=$matches[3]',
281
- 'top'
282
- );*/
283
-
284
- /**
285
- * Quiz permalink with category inside
286
- */
287
- add_rewrite_rule(
288
- '^course/(.+?)/([^/]+)(?:/' . $post_types['lp_quiz']->rewrite['slug'] . '/([^/]+))/?$',
289
- 'index.php?' . $course_type . '=$matches[2]&course_category=$matches[1]&quiz=$matches[3]',
290
- 'top'
291
- );
292
-
293
- /**
294
- * Lesson permalink without category
295
- */
296
- add_rewrite_rule(
297
- '^' . $slug . '/([^/]*)/(' . $post_types['lp_quiz']->rewrite['slug'] . ')/([^/]+)/?$',
298
- 'index.php?' . $course_type . '=$matches[1]&quiz=$matches[3]',
299
- 'top'
300
- );
301
-
302
-
303
- /*add_rewrite_rule(
304
- '^' . $slug . '/([^/]*)/(' . $post_types['lp_quiz']->rewrite['slug'] . ')?/([^/]*)?/?([^/]*)?',
305
- 'index.php?' . $course_type . '=$matches[1]&quiz=$matches[3]&question=$matches[4]',
306
- 'top'
307
- );*/
308
-
309
-
310
- }
311
-
312
- /**
313
- * @param $query
314
- *
315
- * @return array
316
- */
317
- function parse_course_request( $query ) {
318
- $return = array();
319
- if ( !empty( $query ) ) {
320
- $segments = explode( '/', $query );
321
- $segments = array_filter( $segments );
322
- if ( $segments ) {
323
- $ids = array();
324
- $names = array();
325
- foreach ( $segments as $segment ) {
326
- if ( preg_match( '/^([0-9]+)/', $segment ) ) {
327
- $post_args = explode( '-', $segment, 2 );
328
- $ids[] = absint( $post_args[0] );
329
- $names[] = $post_args[1];
330
- }
331
- }
332
-
333
- if ( sizeof( $ids ) ) {
334
- global $wpdb;
335
- $ids_format = array_fill( 0, sizeof( $ids ), '%d' );
336
- $names_format = array_fill( 0, sizeof( $names ), '%s' );
337
-
338
- $query = $wpdb->prepare( "
339
- SELECT ID, post_name, post_type
340
- FROM {$wpdb->posts}
341
- WHERE ID IN(" . join( ',', $ids_format ) . ")
342
- AND post_name IN(" . join( ',', $names_format ) . ")
343
- ORDER BY FIELD(ID, " . join( ',', $ids_format ) . ")
344
- ", array_merge( $ids, $names, $ids ) );
345
- if ( $items = $wpdb->get_results( $query ) ) {
346
- $support_types = learn_press_course_get_support_item_types();
347
- foreach ( $items as $item ) {
348
- if ( array_key_exists( $item->post_type, $support_types ) ) {
349
- $return[] = $item;
350
- }
351
- }
352
- }
353
- }
354
- }
355
- }
356
- return $return;
357
- }
358
-
359
- /**
360
- * This function parse query vars and put into request
361
- */
362
- function parse_query_vars_to_request() {
363
- global $wp_query, $wp;
364
- if ( isset( $wp_query->query['user'] ) ) {
365
- /*if ( !get_option( 'permalink_structure' ) ) {
366
- $wp_query->query_vars['user'] = !empty( $_REQUEST['user'] ) ? $_REQUEST['user'] : null;
367
- $wp_query->query_vars['tab'] = !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : null;
368
- $wp_query->query_vars['order_id'] = !empty( $_REQUEST['order_id'] ) ? $_REQUEST['order_id'] : null;
369
- $wp_query->query['user'] = !empty( $_REQUEST['user'] ) ? $_REQUEST['user'] : null;
370
- $wp_query->query['tab'] = !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : null;
371
- $wp_query->query['order_id'] = !empty( $_REQUEST['order_id'] ) ? $_REQUEST['order_id'] : null;
372
- } else {
373
- list( $username, $tab, $id ) = explode( '/', $wp_query->query['user'] );
374
- $wp_query->query_vars['user'] = $username;
375
- $wp_query->query_vars['tab'] = $tab;
376
- $wp_query->query_vars['order_id'] = $id;
377
- $wp_query->query['user'] = $username;
378
- $wp_query->query['tab'] = $tab;
379
- $wp_query->query['order_id'] = $id;
380
- }*/
381
- }
382
- global $wpdb;
383
- // if lesson name is passed, find it's ID and put into request
384
- /*if ( !empty( $wp_query->query_vars['lesson'] ) ) {
385
- if ( $lesson_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_name = %s AND post_type = %s", $wp_query->query_vars['lesson'], LP_LESSON_CPT ) ) ) {
386
- $_REQUEST['lesson'] = $lesson_id;
387
- $_GET['lesson'] = $lesson_id;
388
- $_POST['lesson'] = $lesson_id;
389
- }
390
- }*/
391
- // if question name is passed, find it's ID and put into request
392
- /*if ( !empty( $wp_query->query_vars['question'] ) ) {
393
- if ( $question_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_name = %s AND post_type = %s", $wp_query->query_vars['question'], LP_QUESTION_CPT ) ) ) {
394
- $_REQUEST['question'] = $question_id;
395
- $_GET['question'] = $question_id;
396
- $_POST['question'] = $question_id;
397
- }
398
- }*/
399
-
400
- }
401
-
402
- /**
403
- * Get current course user accessing
404
- *
405
- * @param string $return
406
- *
407
- * @return bool|false|int|LP_Course|mixed
408
- */
409
- public function get_course( $return = 'id' ) {
410
- $course = false;
411
- if ( learn_press_is_course() ) {
412
- $course = get_the_ID();
413
- }
414
- if ( $course && $return == 'object' ) {
415
- $course = learn_press_get_course( $course );
416
- }
417
- return $course;
418
- }
419
-
420
- public function get_course_item( $return = 'id' ) {
421
- $course = $this->get_course( 'object' );
422
- $user = learn_press_get_current_user();
423
- $item = isset( $item ) ? $item : LP()->global['course-item'];
424
- if ( $item && $return == 'object' ) {
425
- $item = LP_Course::get_item( $item );
426
- }
427
- return $item;
428
- }
429
-
430
-
431
- public function query_taxonomy( $q ) {
432
- // We only want to affect the main query
433
- if ( !$q->is_main_query() ) {
434
- return;
435
- }
436
- if ( is_search() ) {
437
- add_filter( 'posts_where', array( $this, 'add_tax_search' ) );
438
- add_filter( 'posts_join', array( $this, 'join_term' ) );
439
- add_filter( 'posts_groupby', array( $this, 'tax_groupby' ) );
440
- }
441
- }
442
-
443
- public function join_term( $join ) {
444
- global $wp_query, $wpdb;
445
-
446
- if ( !empty( $wp_query->query_vars['s'] ) && !is_admin() ) {
447
- if ( !preg_match( '/' . $wpdb->term_relationships . '/', $join ) ) {
448
- $join .= "LEFT JOIN $wpdb->term_relationships ON $wpdb->posts.ID = $wpdb->term_relationships.object_id ";
449
- }
450
- $join .= "LEFT JOIN $wpdb->term_taxonomy ON $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id ";
451
- $join .= "LEFT JOIN $wpdb->terms ON $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id ";
452
- }
453
-
454
- return $join;
455
- }
456
-
457
- public function add_tax_search( $where ) {
458
- global $wp_query, $wpdb;
459
-
460
- if ( !empty( $wp_query->query_vars['s'] ) && !is_admin() ) {
461
- $escaped_s = esc_sql( $wp_query->query_vars['s'] );
462
- $where .= "OR $wpdb->terms.name LIKE '%{$escaped_s}%'";
463
- }
464
-
465
- return $where;
466
- }
467
-
468
- public function tax_groupby( $groupby ) {
469
- global $wpdb;
470
- $groupby = "{$wpdb->posts}.ID";
471
-
472
- $this->remove_query_tax();
473
-
474
- return $groupby;
475
- }
476
-
477
- public function remove_query_tax() {
478
- remove_filter( 'posts_where', 'learn_press_add_tax_search' );
479
- remove_filter( 'posts_join', 'learn_press_join_term' );
480
- remove_filter( 'posts_groupby', 'learn_press_tax_groupby' );
481
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
482
  }
1
+ <?php
2
+
3
+ /**
4
+ * Class LP_Query
5
+ */
6
+
7
+ defined( 'ABSPATH' ) || exit;
8
+
9
+ class LP_Query {
10
+ /**
11
+ * @var array
12
+ */
13
+ public $query_vars = array();
14
+
15
+ /**
16
+ * LP_Query constructor.
17
+ */
18
+ public function __construct() {
19
+ add_action( 'init', array( $this, 'add_rewrite_tags' ), 1000, 0 );
20
+ add_action( 'init', array( $this, 'add_rewrite_rules' ), 1000, 0 );
21
+ add_action( 'parse_query', array( $this, 'parse_request' ), 1000, 1 );
22
+ /**
23
+ * Add searching post by taxonomies
24
+ */
25
+ add_action( 'pre_get_posts', array( $this, 'query_taxonomy' ) );
26
+ }
27
+
28
+ /**
29
+ * Parses request params and controls page
30
+ *
31
+ * @param WP_Query $q
32
+ *
33
+ * @return mixed
34
+ */
35
+ public function parse_request( $q ) {
36
+ if ( did_action( 'learn_press_parse_query' ) ) {
37
+ return $q;
38
+ }
39
+ $user = learn_press_get_current_user();
40
+ $request = $this->get_request();
41
+ if ( !$request || is_admin() ) {
42
+ return $q;
43
+ }
44
+ remove_filter( 'do_parse_request', array( $this, 'get_current_quiz_question' ), 1010, 3 );
45
+ $course_type = 'lp_course';
46
+ $post_types = get_post_types( '', 'objects' );
47
+
48
+ if ( empty( $post_types[$course_type] ) ) {
49
+ return;
50
+ }
51
+ /********************/
52
+ if ( empty( $q->query_vars[LP_COURSE_CPT] ) ) {
53
+ return;
54
+ }
55
+ $this->query_vars['course'] = $q->query_vars[LP_COURSE_CPT];
56
+ $course_id = learn_press_setup_course_data( $this->query_vars['course'] );
57
+ $quiz_name = '';
58
+ $question_name = '';
59
+ $lesson_name = '';
60
+ if ( !empty( $q->query_vars['quiz'] ) ) {
61
+ $quiz_name = $this->query_vars['quiz'] = $q->query_vars['quiz'];
62
+ $this->query_vars['item_type'] = LP_QUIZ_CPT;
63
+ if ( !empty( $q->query_vars['question'] ) ) {
64
+ $question_name = $this->query_vars['question'] = $q->query_vars['question'];
65
+ }
66
+ } elseif ( !empty( $q->query_vars['lesson'] ) ) {
67
+ $lesson_name = $this->query_vars['lesson'] = $q->query_vars['lesson'];
68
+ $this->query_vars['item_type'] = LP_LESSON_CPT;
69
+ }
70
+ if ( $quiz_name && $question_name ) {
71
+ if ( $quiz = learn_press_get_post_by_name( $quiz_name, LP_QUIZ_CPT ) ) {
72
+ if ( $user->has_quiz_status( 'completed', $quiz->ID, $course_id ) ) {
73
+ //remove question name from uri
74
+ $course = learn_press_get_course( $course_id );
75
+ $redirect = $course->get_item_link( $quiz->ID );// get_site_url() . '/' . dirname( $request_match );
76
+ wp_redirect( $redirect );
77
+ exit();
78
+ }
79
+ if ( $question = learn_press_get_post_by_name( $question_name, 'lp_question' ) ) {
80
+ global $wpdb;
81
+ $query = $wpdb->prepare( "
82
+ SELECT MAX(user_item_id)
83
+ FROM {$wpdb->prefix}learnpress_user_items
84
+ WHERE user_id = %d AND item_id = %d AND item_type = %s and status <> %s
85
+ ", learn_press_get_current_user_id(), $quiz->ID, 'lp_quiz', 'completed' );
86
+ if ( $history_id = $wpdb->get_var( $query ) ) {
87
+ learn_press_update_user_item_meta( $history_id, 'current_question', $question->ID );
88
+ }
89
+ }
90
+ }
91
+ }
92
+ $this->query_vars['course_id'] = $course_id;
93
+ do_action_ref_array( 'learn_press_parse_query', array( &$this ) );
94
+
95
+ return $q;
96
+ /************************/
97
+ $slug = preg_replace( '!^/!', '', $post_types[$course_type]->rewrite['slug'] );
98
+
99
+ $match = '^' . $slug . '/([^/]*)/(' . $post_types['lp_quiz']->rewrite['slug'] . ')?/([^/]*)?/?([^/]*)?';
100
+
101
+ $request_match = $request;
102
+ $course_id = 0;
103
+ if ( !empty( $q->query_vars['post_type'] ) && $q->query_vars['post_type'] == LP_COURSE_CPT ) {
104
+ if ( !empty( $q->query_vars[LP_COURSE_CPT] ) ) {
105
+ $this->query_vars['course'] = $q->query_vars[LP_COURSE_CPT];
106
+ $course_id = learn_press_setup_course_data( $this->query_vars['course'] );
107
+ }
108
+ if ( !empty( $q->query_vars['quiz'] ) ) {
109
+ $this->query_vars['quiz'] = $q->query_vars['quiz'];
110
+ $this->query_vars['item_type'] = LP_QUIZ_CPT;
111
+ } elseif ( !empty( $q->query_vars['lesson'] ) ) {
112
+ $this->query_vars['lesson'] = $q->query_vars['lesson'];
113
+ $this->query_vars['item_type'] = LP_LESSON_CPT;
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Match request URI with quiz permalink
119
+ */
120
+ if ( preg_match( "#^$match#", $request_match, $matches ) || preg_match( "#^$match#", urldecode( $request_match ), $matches ) ) {
121
+
122
+ // If request URI is a quiz permalink
123
+ if ( !empty( $matches[3] ) ) {
124
+ if ( !$post = learn_press_get_post_by_name( $matches[3], 'lp_quiz', true ) ) {
125
+ return $q;
126
+ }
127
+ // If request URI does not contains a question
128
+ // Try to get current question of current user and put it into URI
129
+ if ( empty( $matches[4] ) ) {
130
+ if ( $user->has_quiz_status( 'started', $post->ID, $course_id ) && $question_id = $user->get_current_quiz_question( $post->ID, $course_id ) ) {
131
+ $this->query_vars['question'] = $q->query_vars['question'] = get_post_field( 'post_name', $question_id );
132
+ }
133
+ } else {
134
+ // If user is viewing a question then update current question for user
135
+ $question = learn_press_get_post_by_name( $matches[4], 'lp_question' );
136
+ /**
137
+ * If user has completed a quiz but they are accessing to a question inside quiz,
138
+ * redirect them back to quiz to show results of that quiz instead
139
+ */
140
+ if ( $user->has_quiz_status( 'completed', $post->ID, $course_id ) ) {
141
+ //remove question name from uri
142
+ $redirect = get_site_url() . '/' . dirname( $request_match );
143
+ wp_redirect( $redirect );
144
+ exit();
145
+ }
146
+ if ( $question ) {
147
+ global $wpdb;
148
+ $query = $wpdb->prepare( "
149
+ SELECT MAX(user_item_id)
150
+ FROM {$wpdb->prefix}learnpress_user_items
151
+ WHERE user_id = %d AND item_id = %d AND item_type = %s and status <> %s
152
+ ", learn_press_get_current_user_id(), $post->ID, 'lp_quiz', 'completed' );
153
+ if ( $history_id = $wpdb->get_var( $query ) ) {
154
+ learn_press_update_user_item_meta( $history_id, 'current_question', $question->ID );
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }
160
+ $this->query_vars['course_id'] = $course_id;
161
+ do_action_ref_array( 'learn_press_parse_query', array( &$this ) );
162
+ return $q;
163
+ }
164
+
165
+ /**
166
+ * This function is cloned from wp core function
167
+ *
168
+ * @see WP()->parse_request()
169
+ *
170
+ * @return string
171
+ */
172
+ public function get_request() {
173
+ global $wp_rewrite;
174
+ $pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';
175
+ list( $pathinfo ) = explode( '?', $pathinfo );
176
+ $pathinfo = str_replace( "%", "%25", $pathinfo );
177
+
178
+ list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );
179
+ $self = $_SERVER['PHP_SELF'];
180
+ $home_path = trim( parse_url( home_url(), PHP_URL_PATH ), '/' );
181
+ $home_path_regex = sprintf( '|^%s|i', preg_quote( $home_path, '|' ) );
182
+
183
+ // Trim path info from the end and the leading home path from the
184
+ // front. For path info requests, this leaves us with the requesting
185
+ // filename, if any. For 404 requests, this leaves us with the
186
+ // requested permalink.
187
+ $req_uri = str_replace( $pathinfo, '', $req_uri );
188
+ $req_uri = trim( $req_uri, '/' );
189
+ $req_uri = preg_replace( $home_path_regex, '', $req_uri );
190
+ $req_uri = trim( $req_uri, '/' );
191
+ $pathinfo = trim( $pathinfo, '/' );
192
+ $pathinfo = preg_replace( $home_path_regex, '', $pathinfo );
193
+ $pathinfo = trim( $pathinfo, '/' );
194
+ $self = trim( $self, '/' );
195
+ $self = preg_replace( $home_path_regex, '', $self );
196
+ $self = trim( $self, '/' );
197
+
198
+ // The requested permalink is in $pathinfo for path info requests and
199
+ // $req_uri for other requests.
200
+ if ( !empty( $pathinfo ) && !preg_match( '|^.*' . $wp_rewrite->index . '$|', $pathinfo ) ) {
201
+ $request = $pathinfo;
202
+ } else {
203
+ // If the request uri is the index, blank it out so that we don't try to match it against a rule.
204
+ if ( $req_uri == $wp_rewrite->index )
205
+ $req_uri = '';
206
+ $request = $req_uri;
207
+ }
208
+ return $request;
209
+ }
210
+
211
+ /**
212
+ * Add custom rewrite tags
213
+ */
214
+ function add_rewrite_tags() {
215
+ add_rewrite_tag( '%lesson%', '([^&]+)' );
216
+ add_rewrite_tag( '%quiz%', '([^&]+)' );
217
+ add_rewrite_tag( '%question%', '([^&]+)' );
218
+ add_rewrite_tag( '%user%', '([^/]*)' );
219
+ add_rewrite_tag( '%course-query-string%', '(.*)' );
220
+ do_action( 'learn_press_add_rewrite_tags' );
221
+ }
222
+
223
+ /**
224
+ * Add more custom rewrite rules
225
+ */
226
+ function add_rewrite_rules() {
227
+
228
+ $rewrite_prefix = get_option( 'learn_press_permalink_structure' );
229
+ // lesson
230
+ $course_type = 'lp_course';
231
+ $post_types = get_post_types( '', 'objects' );
232
+ $slug = preg_replace( '!^/!', '', $post_types[$course_type]->rewrite['slug'] );
233
+ $has_category = false;
234
+ if ( preg_match( '!(%?course_category%?)!', $slug ) ) {
235
+ $slug = preg_replace( '!(%?course_category%?)!', '(.+?)/([^/]+)', $slug );
236
+ $has_category = true;
237
+ }
238
+ $current_url = learn_press_get_current_url();
239
+ $query_string = str_replace( trailingslashit( get_site_url() ), '', $current_url );
240
+
241
+ if ( $has_category ) {
242
+ add_rewrite_rule(
243
+ '^' . $slug . '(?:/' . $post_types['lp_lesson']->rewrite['slug'] . '/([^/]+))/?$',
244
+ 'index.php?' . $course_type . '=$matches[2]&course_category=$matches[1]&lesson=$matches[3]',
245
+ 'top'
246
+ );
247
+ add_rewrite_rule(
248
+ '^' . $slug . '(?:/' . $post_types['lp_quiz']->rewrite['slug'] . '/([^/]+)/?([^/]+)?)/?$',
249
+ 'index.php?' . $course_type . '=$matches[2]&course_category=$matches[1]&quiz=$matches[3]&question=$matches[4]',
250
+ 'top'
251
+ );
252
+ } else {
253
+
254
+ $custom_slug_lesson= sanitize_title_with_dashes( LP()->settings->get( 'lesson_slug' ) );
255
+ $custom_slug_quiz = sanitize_title_with_dashes( LP()->settings->get( 'quiz_slug' ) );
256
+
257
+ if ( !empty( $custom_slug_lesson ) ) {
258
+ $post_types['lp_lesson']->rewrite['slug'] = $custom_slug_lesson;
259
+ }
260
+ if ( !empty( $custom_slug_quiz ) ) {
261
+ $post_types['lp_quiz']->rewrite['slug'] = $custom_slug_quiz;
262
+ }
263
+
264
+ add_rewrite_rule(
265
+ '^' . $slug . '/([^/]+)(?:/' . $post_types['lp_lesson']->rewrite['slug'] . '/([^/]+))/?$',
266
+ 'index.php?' . $course_type . '=$matches[1]&lesson=$matches[2]',
267
+ 'top'
268
+ );
269
+ add_rewrite_rule(
270
+ '^' . $slug . '/([^/]+)(?:/' . $post_types['lp_quiz']->rewrite['slug'] . '/([^/]+)/?([^/]+)?)/?$',
271
+ 'index.php?' . $course_type . '=$matches[1]&quiz=$matches[2]&question=$matches[3]',
272
+ 'top'
273
+ );
274
+ }
275
+
276
+ if ( $profile_id = learn_press_get_page_id( 'profile' ) ) {
277
+ add_rewrite_rule(
278
+ '^' . $rewrite_prefix . get_post_field( 'post_name', $profile_id ) . '/([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?',
279
+ 'index.php?page_id=' . $profile_id . '&user=$matches[1]&view=$matches[2]&id=$matches[3]&paged=$matches[4]',
280
+ 'top'
281
+ );
282
+ }
283
+
284
+ if ( $course_page_id = learn_press_get_page_id( 'courses' ) ) {
285
+ add_rewrite_rule(
286
+ '^' . $rewrite_prefix . get_post_field( 'post_name', $course_page_id ) . '/page/([0-9]{1,})/?$',
287
+ 'index.php?pagename=' . get_post_field( 'post_name', $course_page_id ) . '&page=$matches[1]',
288
+ 'top'
289
+ );
290
+ /**
291
+ add_rewrite_rule(
292
+ '^' . $rewrite_prefix . get_post_field( 'post_name', $course_page_id ) . '/page/([0-9]{1,})/?$',
293
+ 'index.php?page_id=' . $course_page_id . '&paged=$matches[1]',
294
+ 'top'
295
+ );*/
296
+ }
297
+ do_action( 'learn_press_add_rewrite_rules' );
298
+ return;
299
+
300
+ /**
301
+ * Lesson permalink without category
302
+ */
303
+ /*add_rewrite_rule(
304
+ '^' . $slug . '/([^/]*)/(' . $post_types['lp_lesson']->rewrite['slug'] . ')/([^/]+)/?$',
305
+ 'index.php?' . $course_type . '=$matches[1]&lesson=$matches[3]',
306
+ 'top'
307
+ );*/
308
+
309
+ /**
310
+ * Quiz permalink with category inside
311
+ */
312
+ add_rewrite_rule(
313
+ '^course/(.+?)/([^/]+)(?:/' . $post_types['lp_quiz']->rewrite['slug'] . '/([^/]+))/?$',
314
+ 'index.php?' . $course_type . '=$matches[2]&course_category=$matches[1]&quiz=$matches[3]',
315
+ 'top'
316
+ );
317
+
318
+ /**
319
+ * Lesson permalink without category
320
+ */
321
+ add_rewrite_rule(
322
+ '^' . $slug . '/([^/]*)/(' . $post_types['lp_quiz']->rewrite['slug'] . ')/([^/]+)/?$',
323
+ 'index.php?' . $course_type . '=$matches[1]&quiz=$matches[3]',
324
+ 'top'
325
+ );
326
+
327
+
328
+ /*add_rewrite_rule(
329
+ '^' . $slug . '/([^/]*)/(' . $post_types['lp_quiz']->rewrite['slug'] . ')?/([^/]*)?/?([^/]*)?',
330
+ 'index.php?' . $course_type . '=$matches[1]&quiz=$matches[3]&question=$matches[4]',
331
+ 'top'
332
+ );*/
333
+
334
+
335
+ }
336
+
337
+ /**
338
+ * @param $query
339
+ *
340
+ * @return array
341
+ */
342
+ function parse_course_request( $query ) {
343
+ $return = array();
344
+ if ( !empty( $query ) ) {
345
+ $segments = explode( '/', $query );
346
+ $segments = array_filter( $segments );
347
+ if ( $segments ) {
348
+ $ids = array();
349
+ $names = array();
350
+ foreach ( $segments as $segment ) {
351
+ if ( preg_match( '/^([0-9]+)/', $segment ) ) {
352
+ $post_args = explode( '-', $segment, 2 );
353
+ $ids[] = absint( $post_args[0] );
354
+ $names[] = $post_args[1];
355
+ }
356
+ }
357
+
358
+ if ( sizeof( $ids ) ) {
359
+ global $wpdb;
360
+ $ids_format = array_fill( 0, sizeof( $ids ), '%d' );
361
+ $names_format = array_fill( 0, sizeof( $names ), '%s' );
362
+
363
+ $query = $wpdb->prepare( "
364
+ SELECT ID, post_name, post_type
365
+ FROM {$wpdb->posts}
366
+ WHERE ID IN(" . join( ',', $ids_format ) . ")
367
+ AND post_name IN(" . join( ',', $names_format ) . ")
368
+ ORDER BY FIELD(ID, " . join( ',', $ids_format ) . ")
369
+ ", array_merge( $ids, $names, $ids ) );
370
+ if ( $items = $wpdb->get_results( $query ) ) {
371
+ $support_types = learn_press_course_get_support_item_types();
372
+ foreach ( $items as $item ) {
373
+ if ( array_key_exists( $item->post_type, $support_types ) ) {
374
+ $return[] = $item;
375
+ }
376
+ }
377
+ }
378
+ }
379
+ }
380
+ }
381
+ return $return;
382
+ }
383
+
384
+ /**
385
+ * This function parse query vars and put into request
386
+ */
387
+ function parse_query_vars_to_request() {
388
+ global $wp_query, $wp;
389
+ if ( isset( $wp_query->query['user'] ) ) {
390
+ /*if ( !get_option( 'permalink_structure' ) ) {
391
+ $wp_query->query_vars['user'] = !empty( $_REQUEST['user'] ) ? $_REQUEST['user'] : null;
392
+ $wp_query->query_vars['tab'] = !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : null;
393
+ $wp_query->query_vars['order_id'] = !empty( $_REQUEST['order_id'] ) ? $_REQUEST['order_id'] : null;
394
+ $wp_query->query['user'] = !empty( $_REQUEST['user'] ) ? $_REQUEST['user'] : null;
395
+ $wp_query->query['tab'] = !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : null;
396
+ $wp_query->query['order_id'] = !empty( $_REQUEST['order_id'] ) ? $_REQUEST['order_id'] : null;
397
+ } else {
398
+ list( $username, $tab, $id ) = explode( '/', $wp_query->query['user'] );
399
+ $wp_query->query_vars['user'] = $username;
400
+ $wp_query->query_vars['tab'] = $tab;
401
+ $wp_query->query_vars['order_id'] = $id;
402
+ $wp_query->query['user'] = $username;
403
+ $wp_query->query['tab'] = $tab;
404
+ $wp_query->query['order_id'] = $id;
405
+ }*/
406
+ }
407
+ global $wpdb;
408
+ // if lesson name is passed, find it's ID and put into request
409
+ /*if ( !empty( $wp_query->query_vars['lesson'] ) ) {
410
+ if ( $lesson_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_name = %s AND post_type = %s", $wp_query->query_vars['lesson'], LP_LESSON_CPT ) ) ) {
411
+ $_REQUEST['lesson'] = $lesson_id;
412
+ $_GET['lesson'] = $lesson_id;
413
+ $_POST['lesson'] = $lesson_id;
414
+ }
415
+ }*/
416
+ // if question name is passed, find it's ID and put into request
417
+ /*if ( !empty( $wp_query->query_vars['question'] ) ) {
418
+ if ( $question_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_name = %s AND post_type = %s", $wp_query->query_vars['question'], LP_QUESTION_CPT ) ) ) {
419
+ $_REQUEST['question'] = $question_id;
420
+ $_GET['question'] = $question_id;
421
+ $_POST['question'] = $question_id;
422
+ }
423
+ }*/
424
+
425
+ }
426
+
427
+ /**
428
+ * Get current course user accessing
429
+ *
430
+ * @param string $return
431
+ *
432
+ * @return bool|false|int|LP_Course|mixed
433
+ */
434
+ public function get_course( $return = 'id' ) {
435
+ $course = false;
436
+ if ( learn_press_is_course() ) {
437
+ $course = get_the_ID();
438
+ }
439
+ if ( $course && $return == 'object' ) {
440
+ $course = learn_press_get_course( $course );
441
+ }
442
+ return $course;
443
+ }
444
+
445
+ public function get_course_item( $return = 'id' ) {
446
+ $course = $this->get_course( 'object' );
447
+ $user = learn_press_get_current_user();
448
+ $item = isset( $item ) ? $item : LP()->global['course-item'];
449
+ if ( $item && $return == 'object' ) {
450
+ $item = LP_Course::get_item( $item );
451
+ }
452
+ return $item;
453
+ }
454
+
455
+
456
+ public function query_taxonomy( $q ) {
457
+ // We only want to affect the main query
458
+ if ( !$q->is_main_query() ) {
459
+ return;
460
+ }
461
+ if ( is_search() ) {
462
+ add_filter( 'posts_where', array( $this, 'add_tax_search' ) );
463
+ add_filter( 'posts_join', array( $this, 'join_term' ) );
464
+ add_filter( 'posts_groupby', array( $this, 'tax_groupby' ) );
465
+ }
466
+ }
467
+
468
+ public function join_term( $join ) {
469
+ global $wp_query, $wpdb;
470
+
471
+ if ( !empty( $wp_query->query_vars['s'] ) && !is_admin() ) {
472
+ if ( !preg_match( '/' . $wpdb->term_relationships . '/', $join ) ) {
473
+ $join .= "LEFT JOIN $wpdb->term_relationships ON $wpdb->posts.ID = $wpdb->term_relationships.object_id ";
474
+ }
475
+ $join .= "LEFT JOIN $wpdb->term_taxonomy ON $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id ";
476
+ $join .= "LEFT JOIN $wpdb->terms ON $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id ";
477
+ }
478
+
479
+ return $join;
480
+ }
481
+
482
+ public function add_tax_search( $where ) {
483
+ global $wp_query, $wpdb;
484
+
485
+ if ( !empty( $wp_query->query_vars['s'] ) && !is_admin() ) {
486
+ $escaped_s = esc_sql( $wp_query->query_vars['s'] );
487
+ $where .= "OR $wpdb->terms.name LIKE '%{$escaped_s}%'";
488
+ }
489
+
490
+ return $where;
491
+ }
492
+
493
+ public function tax_groupby( $groupby ) {
494
+ global $wpdb;
495
+ $groupby = "{$wpdb->posts}.ID";
496
+
497
+ $this->remove_query_tax();
498
+
499
+ return $groupby;
500
+ }
501
+
502
+ public function remove_query_tax() {
503
+ remove_filter( 'posts_where', 'learn_press_add_tax_search' );
504
+ remove_filter( 'posts_join', 'learn_press_join_term' );
505
+ remove_filter( 'posts_groupby', 'learn_press_tax_groupby' );
506
+ }
507
  }
inc/course/abstract-lp-course.php CHANGED
@@ -1,1514 +1,1528 @@
1
- <?php
2
-
3
- defined( 'ABSPATH' ) || exit();
4
-
5
- /**
6
- * Class LP_Abstract_Course
7
- */
8
- abstract class LP_Abstract_Course {
9
- /**
10
- * The course (post) ID.
11
- *
12
- * @var int
13
- */
14
- public $id = 0;
15
-
16
- /**
17
- * $post Stores post data
18
- *
19
- * @var $post WP_Post
20
- */
21
- public $post = null;
22
-
23
- /**
24
- *
25
- * @var string
26
- */
27
- public $course_type = null;
28
-
29
- /**
30
- * Course curriculum
31
- *
32
- * @var array
33
- */
34
- protected static $_curriculum = array();
35
-
36
- /**
37
- * @var null
38
- */
39
- protected $_count_users = null;
40
-
41
- /**
42
- * @var null
43
- */
44
- protected $_students_list = null;
45
-
46
- /**
47
- * @var array
48
- */
49
- protected static $_lessons = array();
50
-
51
- /**
52
- * Constructor gets the post object and sets the ID for the loaded course.
53
- *
54
- * @param int|LP_Course|object $course Course ID, post object, or course object
55
- * @param int $user
56
- */
57
- public function __construct( $course, $user = 0 ) {
58
- if ( is_numeric( $course ) ) {
59
- $this->id = absint( $course );
60
- $this->post = get_post( $this->id );
61
- } elseif ( $course instanceof LP_Course ) {
62
- $this->id = absint( $course->id );
63
- $this->post = $course->post;
64
- } elseif ( isset( $course->ID ) ) {
65
- $this->id = absint( $course->ID );
66
- $this->post = get_post( $course->ID );
67
- }
68
- if ( empty( self::$_lessons[$this->id] ) ) {
69
- self::$_lessons[$this->id] = array();
70
- }
71
- if ( $user ) {
72
- $this->init_for_user( $user );
73
- }
74
- }
75
-
76
- public function init_for_user() {
77
-
78
- }
79
-
80
- /**
81
- * __isset function.
82
- *
83
- * @param mixed $key
84
- *
85
- * @return bool
86
- */
87
- public function __isset( $key ) {
88
- return metadata_exists( 'post', $this->id, '_' . $key );
89
- }
90
-
91
- /**
92
- * __get function.
93
- *
94
- * @param string $key
95
- *
96
- * @return mixed
97
- */
98
- public function __get( $key ) {
99
- if ( strcasecmp( $key, 'ID' ) == 0 ) {
100
- $key = strtolower( $key );
101
- }
102
- if ( empty( $this->{$key} ) ) {
103
- $value = false;
104
- switch ( $key ) {
105
- case 'current_item':
106
- if ( !empty( LP()->global['course-item'] ) ) {
107
- $value = LP()->global['course-item'];
108
- }
109
-
110
- break;
111
- case 'current_lesson':
112
- $lesson_id = ( ( $lesson_id = learn_press_get_request( "lesson_id" ) ) && $this->has( 'item', $lesson_id ) ) ? $lesson_id : null;
113
- if ( $lesson_id ) {
114
- $value = LP_Lesson::get_lesson( $lesson_id );
115
- }
116
- break;
117
- case 'permalink':
118
- $value = get_the_permalink( $this->id );
119
- break;
120
- case 'duration':
121
- $value = get_post_meta( $this->id, '_lp_' . $key, true );
122
- $duration = learn_press_get_course_duration_support();
123
- $duration_keys = array_keys( $duration );
124
- if ( !preg_match_all( '!([0-9]+)\s(' . join( '|', $duration_keys ) . ')!', $value, $matches ) ) {
125
- $a1 = absint( $value );
126
- $a2 = end( $duration_keys );
127
- $value = $a1 . ' ' . $a2;
128
- update_post_meta( $this->id, '_lp_' . $key, $value );
129
- }
130
- break;
131
- default: // default is get course meta key
132
- if ( func_num_args() > 1 ) {
133
- $single = func_get_arg( 1 );
134
- if ( $single !== false && $single !== true ) {
135
- $single = true;
136
- }
137
- } else {
138
- $single = true;
139
- }
140
- $value = get_post_meta( $this->id, '_lp_' . $key, $single );
141
- if ( ( $key == 'price' || $key == 'total' ) && get_post_meta( $this->id, '_lp_payment', true ) != 'yes' ) {
142
- $value = 0;
143
- }
144
-
145
- }
146
- if ( !empty( $value ) ) {
147
- $this->$key = $value;
148
- }
149
- }
150
- return !empty( $this->$key ) ? $this->$key : null;
151
- }
152
-
153
- /**
154
- * Get course thumbnail, return placeholder if it does not exists
155
- *
156
- * @param string $size
157
- * @param array $attr
158
- *
159
- * @return mixed|null|void
160
- */
161
- public function get_image( $size = 'course_thumbnail', $attr = array() ) {
162
- $attr = wp_parse_args(
163
- $attr,
164
- array(
165
- 'alt' => $this->get_title()
166
- )
167
- );
168
- $image = false;
169
- if ( has_post_thumbnail( $this->id ) ) {
170
- $image = get_the_post_thumbnail( $this->id, $size, $attr );
171
- } elseif ( ( $parent_id = wp_get_post_parent_id( $this->id ) ) && has_post_thumbnail( $parent_id ) ) {
172
- $image = get_the_post_thumbnail( $parent_id, $size, $attr );
173
- }
174
- if ( !$image ) {
175
- if ( 'course_thumbnail' == $size ) {
176
- $image = LP()->image( 'placeholder-400x250' );
177
- } else {
178
- $image = LP()->image( 'placeholder-800x450' );
179
- }
180
- $image = sprintf( '<img src="%s" %s />', $image, '' );
181
- }
182
- return apply_filters( 'learn_press_course_image', $image, $this->id, $size, $attr );
183
- }
184
-
185
- public function get_permalink() {
186
- return $this->permalink;
187
- }
188
-
189
- public function is_visible() {
190
- return true;
191
- }
192
-
193
- public function get_request_item( $field = 'id' ) {
194
- $return = LP()->global['course-item'];
195
- if ( !empty( $_REQUEST['course-item'] ) ) {
196
- $type = $_REQUEST['course-item'];
197
- if ( $field == 'type' ) {
198
- $return = $type;
199
- } elseif ( $field == 'id' ) {
200
- $return = !empty( $_REQUEST[$type . '_id'] ) ? $_REQUEST[$type . '_id'] : 0;
201
- } elseif ( $field == 'name' ) {
202
- $return = !empty( $_REQUEST[$type] ) ? $_REQUEST[$type] : false;
203
- }
204
- }
205
- return $return;
206
- }
207
-
208
- /**
209
- * Get the course's post data.
210
- *
211
- * @return object
212
- */
213
- public function get_course_data() {
214
- return $this->post;
215
- }
216
-
217
- /**
218
- *
219
- * @return mixed
220
- */
221
- public function is_enrollable() {
222
- $enrollable = true;
223
-
224
- // Products must exist of course
225
- if ( !$this->exists() ) {
226
- $enrollable = false;
227
- // Check the product is published
228
- } elseif ( $this->post->post_status !== 'publish' && !current_user_can( 'edit_post', $this->id ) ) {
229
- $enrollable = false;
230
- }
231
-
232
- return apply_filters( 'learn_press_is_enrollable', $enrollable, $this );
233
- }
234
-
235
- /**
236
- * Course is exists if the post is not empty
237
- *
238
- * @return bool
239
- */
240
- public function exists() {
241
- return empty( $this->post ) ? false : true;
242
- }
243
-
244
- /**
245
- * The course is require enrollment or not
246
- *
247
- * @return bool
248
- */
249
- public function is_require_enrollment() {
250
- return $this->is_required_enroll();
251
- }
252
-
253
- /**
254
- * Check if this course is required to enroll
255
- *
256
- * @param mixed
257
- *
258
- * @return bool
259
- */
260
- public function is_required_enroll() {
261
-
262
- if ( func_get_args() ) {
263
- $required = $this->required_enroll == func_get_arg( 0 );
264
- } else {
265
- $required = $this->required_enroll !== 'no';
266
- }
267
- $required = $required || ( $this->payment == 'yes' );
268
-
269
- return apply_filters( 'learn_press_course_required_enroll', $required, $this );
270
- }
271
-
272
- private function _get_posts_by_id( $ids ) {
273
- global $wpdb;
274
- settype( $ids, 'array' );
275
- $posts = $wpdb->get_results( "
276
- SELECT *
277
- FROM {$wpdb->posts}
278
- WHERE ID IN(" . join( ',', $ids ) . ")
279
- " );
280
- return $posts;
281
- }
282
-
283
- public function get_title() {
284
- return apply_filters( 'learn_press_course_title', $this->post ? $this->post->post_title : '', $this );
285
- }
286
-
287
- public function get_description() {
288
- return apply_filters( 'the_content', $this->post->post_content );
289
- }
290
-
291
- /**
292
- * Get all curriculum of this course
293
- *
294
- * @param int $section_id
295
- * @param bool $force
296
- *
297
- * @return mixed
298
- */
299
- public function get_curriculum( $section_id = 0, $force = false ) {
300
- if ( !$this->id ) {
301
- return false;
302
- }
303
- if ( false ) {
304
- $curriculum = LP_Cache::get_course_curriculum( false, array() );
305
-
306
- if ( !array_key_exists( $this->id, $curriculum ) || $force ) {
307
- global $wpdb;
308
-
309
- $curriculum[$this->id] = array();
310
- $query = $wpdb->prepare( "
311
- SELECT cc.*
312
- FROM {$wpdb->posts} p
313
- INNER JOIN {$wpdb->learnpress_sections} cc ON p.ID = cc.section_course_id
314
- WHERE p.ID = %d
315
- ORDER BY `section_order` ASC
316
- ", $this->id );
317
- if ( $rows = $wpdb->get_results( $query, OBJECT_K ) ) {
318
- $section_ids = array_keys( $rows );
319
- $how_many = count( $section_ids );
320
- $placeholders = array_fill( 0, $how_many, '%d' );
321
- $in = implode( ', ', $placeholders );
322
-
323
- $query = $wpdb->prepare( "
324
- SELECT si.*, p.*
325
- FROM {$wpdb->posts} p
326
- INNER JOIN {$wpdb->prefix}learnpress_section_items si ON si.item_id = p.ID
327
- INNER JOIN {$wpdb->prefix}learnpress_sections s ON s.section_id = si.section_id
328
- WHERE s.section_id IN( $in )
329
- ORDER BY s.section_order, si.item_order ASC
330
- ", $section_ids );
331
- $section_items = $wpdb->get_results( $query );
332
- $post_ids = array();
333
- foreach ( $rows as $row ) {
334
- $section = $row;
335
- $section->items = array();
336
- if ( $section_items ) {
337
- $count = 0;
338
- foreach ( $section_items as $item ) {
339
- if ( $item->section_id == $row->section_id ) {
340
- $section->items[] = $item;
341
- /**
342
- * Add item to 'posts' cache group
343
- */
344
- $item_post = wp_cache_get( $item->ID, 'posts' );
345
- if ( !$item_post ) {
346
- wp_cache_add( $item->ID, $item, 'posts' );
347
- }
348
- $post_ids[] = $item->ID;
349
- $count ++;
350
- } else {
351
- if ( $count ) break;
352
- }
353
- }
354
- }
355
- $curriculum[$this->id][$section->section_id] = $section;
356
- }
357
- // update all meta data into cache
358
- update_meta_cache( 'post', $post_ids );
359
- //SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN
360
- }
361
- }
362
- LP_Cache::set_course_curriculum( $curriculum );
363
- $return = false;
364
- if ( $section_id ) {
365
- if ( !empty( $curriculum[$this->id][$section_id] ) ) {
366
- $return = $curriculum[$this->id][$section_id];
367
- }
368
- } else {
369
- $return = $curriculum[$this->id];
370
- }
371
- } // end if(false)
372
- else {
373
- $curriculum = _learn_press_get_course_curriculum( $this->id, $force );
374
- $return = false;
375
- if ( $section_id ) {
376
- if ( !empty( $curriculum[$section_id] ) ) {
377
- $return = $curriculum[$section_id];
378
- }
379
- } else {
380
- $return = $curriculum;
381
- }
382
- }
383
- return apply_filters( 'learn_press_course_curriculum', $return, $this->id, $section_id );
384
- }
385
-
386
- /**
387
- * Count the total of students has enrolled course
388
- *
389
- * @param string (null|append|swaps)
390
- *
391
- * @return mixed
392
- */
393
- public function count_users_enrolled( $count_db = '' ) {
394
-
395
- // Get students enrolled from settings of the course that owns course want to show
396
- // So, if this value is set that means the result is fake ... :)
397
- $enrolled = $this->students;
398
-
399
-
400
- // But, if it is not set then we count the real value from DB
401
- if ( $count_db ) {
402
- $real_enrolled = $this->get_users_enrolled();
403
- if ( $count_db == 'append' ) {
404
- $enrolled += $real_enrolled;
405
- } elseif ( $count_db == 'swaps' && $real_enrolled ) {
406
- $enrolled = $real_enrolled;
407
- }
408
- }
409
- return apply_filters( 'learn_press_count_users_enrolled', $enrolled, $this );
410
- }
411
-
412
- /**
413
- * Count the real users has enrolled
414
- *
415
- * @param bool $force
416
- *
417
- * @return int
418
- */
419
- public function get_users_enrolled( $force = false ) {
420
-
421
- global $wpdb;
422
- if ( $this->_count_users === null || $force ) {
423
- $query = $wpdb->prepare( "
424
- SELECT count(o.ID)
425
- FROM {$wpdb->posts} o
426
- INNER JOIN {$wpdb->learnpress_order_items} oi ON oi.order_id = o.ID
427
- INNER JOIN {$wpdb->learnpress_order_itemmeta} oim ON oim.learnpress_order_item_id = oi.order_item_id
428
- AND oim.meta_key = %s AND oim.meta_value = %d
429
- WHERE o.post_status = %s
430
- ", '_course_id', $this->id, 'lp-completed' );
431
- $this->_count_users = $wpdb->get_var( $query );
432
- }
433
- return $this->_count_users;
434
- }
435
-
436
- /**
437
- * Output html for students enrolled counter
438
- *
439
- * @param int Optional - user ID
440
- *
441
- * @return string
442
- */
443
- public function get_students_html( $user_id = null ) {
444
- $output = '';
445
- if ( $count = $this->count_users_enrolled( 'append' ) ):
446
- $course_info = $this->get_course_info( $user_id );
447
- if ( $course_info['status'] ):
448
- if ( $count == 1 ):
449
- $output .= __( 'You enrolled', 'learnpress' );
450
- else:
451
- $output .= sprintf( _nx( 'You and one student enrolled', 'You and <span class="course-students-number">%1$s</span> students enrolled', intval( $count - 1 ), '', 'learnpress' ), $count - 1 );
452
- endif;
453
- $output = apply_filters( 'learn_press_students_enrolled_html', $output, $this );
454
- else:
455
- $output = sprintf( _nx( 'One student enrolled', '<span class="course-students-number">%1$s</span> students enrolled', $count, '', 'learnpress' ), $count );
456
- $output = apply_filters( 'learn_press_one_student_enrolled_html', $output, $this );
457
- endif;
458
- else:
459
- $output = apply_filters( 'learn_press_no_student_enrolled_html', __( 'No student enrolled', 'learnpress' ), $this );
460
- endif;
461
- return $output;
462
- }
463
-
464
- public function get_instructor() {
465
- $user_data = get_userdata( $this->post->post_author );
466
- $author_name = '';
467
- if ( $user_data ) {
468
- $author_name = $user_data->display_name;
469
- }
470
- return apply_filters( 'learn_press_course_instructor', $author_name, $this->id );
471
- }
472
-
473
- public function get_instructor_html() {
474
- $instructor = $this->get_instructor();
475
- $html = sprintf(
476
- '<a href="%s">%s</a>',
477
- learn_press_user_profile_link( $this->post->post_author ),
478
- $instructor
479
- );
480
- return apply_filters( 'learn_press_course_instructor_html', $html, $this->post->post_author, $this->id );
481
- }
482
-
483
- public function get_course_info( $user_id = null ) {
484
- if ( !$user_id ) {
485
- $user_id = get_current_user_id();
486
- }
487
- $user = learn_press_get_user( $user_id );
488
- return $user->get_course_info( $this->id );
489
- }
490
-
491
- /**
492
- * Check if a course is FREE or need to pay or enroll
493
- *
494
- * @return bool
495
- */
496
- public function is_free() {
497
- $is_free = ( 'no' == $this->payment || ( 0 >= $this->get_price() ) );
498
- return apply_filters( 'learn_press_is_free_course', $is_free, $this );
499
- }
500
-
501
- /**
502
- * Get the origin price of course
503
- * @return mixed
504
- */
505
- public function get_origin_price() {
506
- $price = $this->price;
507
- if ( !$price || 'yes' != $this->payment ) {
508
- $price = 0;
509
- } else {
510
- $price = floatval( $price );
511
- }
512
- return $price;
513
- }
514
-
515
- /**
516
- * Get the sale price of course
517
- * @return mixed
518
- */
519
- public function get_sale_price() {
520
- $res = null;
521
- $sale_price = get_post_meta( $this->id, '_lp_sale_price', true );
522
- if ( 'yes' == $this->payment && is_numeric( $sale_price ) ) {
523
- $sale_price = floatval( $sale_price );
524
- $start_date = get_post_meta( $this->id, '_lp_sale_start', true );
525
- $end_date = get_post_meta( $this->id, '_lp_sale_end', true );
526
- $now = current_time( 'timestamp' );
527
- $end = strtotime( $end_date );
528
- $start = strtotime( $start_date );
529
- if ( ( $now >= $start || !$start_date ) && ( $now <= $end || !$end_date ) && $sale_price ) {
530
- $res = $sale_price;
531
- }
532
- }
533
- return $res;
534
- }
535
-
536
- /**
537
- * Get the price of course
538
- *
539
- * @return mixed
540
- */
541
- public function get_price() {
542
- $price = $this->price;
543
- if ( !$price || 'yes' != $this->payment ) {
544
- $price = 0;
545
- } else {
546
- $price = floatval( $price );
547
- $sale_price = $this->get_sale_price();
548
- if ( is_numeric( $sale_price ) ) {
549
- $price = $sale_price;
550
- }
551
- }
552
- return apply_filters( 'learn_press_course_price', $price, $this );
553
- }
554
-
555
- /**
556
- * Get the price of course with html
557
- *
558
- * @return mixed
559
- */
560
- public function get_price_html() {
561
-
562
- if ( $this->is_free() ) {
563
- $price_html = apply_filters( 'learn_press_course_price_html_free', __( 'Free', 'learnpress' ), $this );
564
- } else {
565
- $price = $this->get_price();
566
- $price = learn_press_format_price( $price, true );
567
- $price_html = apply_filters( 'learn_press_course_price_html', $price, $this );
568
- }
569
- return $price_html;
570
- }
571
-
572
-
573
- /**
574
- * Get the price of course with html
575
- *
576
- * @return mixed
577
- */
578
- public function get_origin_price_html() {
579
- $origin_price_html = '';
580
- if ( !$this->is_free() ) {
581
- $origin_price = $this->get_origin_price();
582
- $origin_price = learn_press_format_price( $origin_price, true );
583
- $origin_price_html = apply_filters( 'learn_press_course_origin_price_html', $origin_price, $this );
584
- }
585
- return $origin_price_html;
586
- }
587
-
588
- /**
589
- * @param $limit int limit of records
590
- * @param $force boolean force to query database
591
- *
592
- * @return array list enrolled students
593
- */
594
- public function get_students_list( $force = false, $limit = - 1 ) {
595
- if ( !$this->exists() ) return null;
596
-
597
- global $wpdb;
598
- if ( $limit < 0 ) $limit = PHP_INT_MAX;
599
-
600
- if ( $this->_students_list === null || $force ) {
601
- $query = $wpdb->prepare( "
602
- SELECT DISTINCT u.*
603
- FROM {$wpdb->users} u
604
- INNER JOIN {$wpdb->prefix}learnpress_user_items ui ON ui.user_id = u.ID
605
- WHERE ui.item_id = %d
606
- AND ui.item_type = %s
607
- LIMIT %d
608
- ", $this->id, LP_COURSE_CPT, $limit );
609
- $this->_students_list = $wpdb->get_results( $query );
610
- }
611
- return $this->_students_list;
612
-
613
- }
614
-
615
-
616
- /**
617
- * Get all quizzes in a course
618
- *
619
- * @param string
620
- *
621
- * @return array
622
- */
623
- public function get_quizzes( $field = null ) {
624
- $items = $this->get_curriculum_items(
625
- array(
626
- 'force' => false,
627
- 'group' => true,
628
- 'field' => $field
629
- )
630
- );
631
- $quizzes = !empty( $items['quizzes'] ) ? $items['quizzes'] : false;
632
- return apply_filters( 'learn_press_course_quizzes', $quizzes, $this );
633
- }
634
-
635
- /**
636
- * Get all lessons in a course
637
- *
638
- * @param mixed
639
- *
640
- * @return array
641
- */
642
- public function get_lessons( $args = null ) {
643
- $args = wp_parse_args(
644
- $args,
645
- array(
646
- 'field' => ''
647
- )
648
- );
649
- $curriculum_args = array_merge(
650
- array(
651
- 'force' => false,
652
- 'group' => true
653
- ),
654
- $args
655
- );
656
- $items = $this->get_curriculum_items( $curriculum_args );
657
- $lessons = !empty( $items['lessons'] ) ? $items['lessons'] : false;
658
- return apply_filters( 'learn_press_course_lessons', $lessons, $this );
659
- }
660
-
661
- /**
662
- * Get all items in a course
663
- *
664
- * @param array $args {
665
- * force bool Force to get curriculum items that does not care for it is already existing in memory or not
666
- * group bool Group the items returned by type of each item
667
- * field string The fields want to get
668
- * }
669
- *
670
- * @return array
671
- */
672
- public function get_curriculum_items( $args = array() ) {
673
-
674
- // default value for $args
675
- $force = false;
676
- $group = false;
677
- $field = '';
678
- $field_map = '';
679
- $field_format = '';
680
-
681
- $args = wp_parse_args(
682
- $args,
683
- array(
684
- 'force' => false,
685
- 'group' => false,
686
- 'field' => '',
687
- 'field_map' => '',
688
- 'field_format' => ''
689
- )
690
- );
691
- $lessons = array();
692
- $quizzes = array();
693
-
694
- // overwrite default values with params passed
695
- extract( $args );
696
- $items = array();
697
- if ( !$this->_curriculum_items || $force ) {
698
- $curriculum = $this->get_curriculum( null, $force );
699
- $index = 0;
700
- if ( !empty( $field ) ) {
701
- if ( is_string( $field ) ) {
702
- $field = explode( '![\s]+!', $field );
703
- }
704
- settype( $field, 'array' );
705
- } else {
706
- $field = false;
707
- }
708
- if ( !empty( $field_map ) ) {
709
- if ( is_string( $field_map ) ) {
710
- $field_map = explode( '![\s]+!', $field_map );
711
- }
712
- settype( $field_map, 'array' );
713
- } else {
714
- $field_map = false;
715
- }
716
- if ( !empty( $field_format ) ) {
717
- if ( is_string( $field_format ) ) {
718
- $field_format = explode( '![\s]+!', $field_format );
719
- }
720
- settype( $field_format, 'array' );
721
- } else {
722
- $field_format = false;
723
- }
724
- //if( is_array( $field ) ) $field = array_map( $field, 'strtolower' );
725
- if ( $curriculum ) foreach ( $curriculum as $section ) {
726
- if ( empty( $section->items ) ) continue;
727
- foreach ( $section->items as $loop_item ) {
728
- $loop_item->section_id = $section->section_id;
729
- if ( $field ) {
730
- $item = array();
731
- $item_array = (array) $loop_item;
732
- foreach ( $field as $k => $field_name ) {
733
- if ( array_key_exists( $field_name, $item_array ) ) {
734
- if ( $field_map && !empty( $field_map[$k] ) ) {
735
- $map_key = $field_map[$k];
736
- } else {
737
- $map_key = $field_name;
738
- }
739
- if ( $field_format && !empty( $field_format[$k] ) ) {
740
- if ( $field_format[$k] == '%d' ) {
741
- $item[$map_key] = strpos( '.', $item_array[$field_name] ) !== false ? floatval( $item_array[$field_name] ) : intval( $item_array[$field_name] );
742
- } elseif ( $field_format[$k] == '%s' ) {
743
- $item[$map_key] = (string) $item_array[$field_name];
744
- }
745
- } else {
746
- $item[$map_key] = $item_array[$field_name];
747
- }
748
- //break;
749
- }
750
- }
751
- if ( sizeof( $item ) == 1 ) {
752
- $item = reset( $item );
753
- }
754
- } else {
755
- $item = $loop_item;
756
- }
757
- if ( $loop_item->post_type == LP_LESSON_CPT ) {
758
- $lessons[$index] = $item;
759
- } else {
760
- $quizzes[$index] = $item;
761
- }
762
- $index ++;
763
- }
764
- }
765
- // group
766
- if ( $group ) {
767
- $items = array(
768
- 'quizzes' => $quizzes,
769
- 'lessons' => $lessons
770
- );
771
- } else {
772
- // combine lessons and quizzes as it should be in curriculum
773
- for ( $i = 0, $n = sizeof( $quizzes ) + sizeof( $lessons ); $i < $n; $i ++ ) {
774
- if ( !empty( $quizzes[$i] ) ) {
775
- $items[] = $quizzes[$i];
776
- } elseif ( !empty( $lessons[$i] ) ) {
777
- $items[] = $lessons[$i];
778
- }
779
- }
780
- }
781
- }
782
- return apply_filters( 'learn_press_get_course_items', $items, $this );
783
- }
784
-
785
- public function is_viewing( $content = '' ) {
786
-
787
- $item_type = !empty( $_REQUEST['course-item'] ) ? $_REQUEST['course-item'] : '';
788
- $viewing = apply_filters( 'learn_press_course_is_viewing', $item_type ? $item_type : 'course' );
789
- if ( $content ) {
790
- return $content == $viewing;
791
- }
792
- return $viewing;
793
- }
794
-
795
- public function is_viewing_item( $item_id = false ) {
796
- $item = LP()->global['course-item'];//$this->get_request_item();
797
- $return = false;
798
- if ( $item ) {
799
- if ( $item_id ) {
800
- $return = $item_id == $item->ID;
801
- } else {
802
- $return = $item->ID;
803
- }
804
- }
805
- return apply_filters( 'learn_press_viewing_course_item', $return, $item_id, $this->id );
806
- }
807
-
808
- public function is_current_item( $item_id ) {
809
- /*$item_type = !empty( $_REQUEST['course-item'] ) ? $_REQUEST['course-item'] : '';
810
- $view_id = 0;
811
- if ( $item_type ) {
812
- if ( !empty( $_REQUEST[$item_type . '_id'] ) ) {
813
- $view_id = $_REQUEST[$item_type . '_id'];
814
- }
815
- }*/
816
- $current_item = $this->current_item;
817
- $view_id = $current_item ? $current_item->ID : 0;
818
- return apply_filters( 'learn_press_is_current_course_item', $view_id == $item_id, $item_id, $view_id, $this->id );
819
- }
820
-
821
- /**
822
- * Check if the course has 'feature'
823
- * This function call to a function with prefix 'has'
824
- *
825
- * @param string
826
- *
827
- * @return mixed
828
- * @throws Exception
829
- */
830
- public function has( $tag ) {
831
- $args = func_get_args();
832
- unset( $args[0] );
833
- $method = 'has_' . preg_replace( '!-!', '_', $tag );
834
- $callback = array( $this, $method );
835
- if ( is_callable( $callback ) ) {
836
- return call_user_func_array( $callback, $args );
837
- } else {
838
- throw new Exception( sprintf( __( 'The function %s doesn\'t exists', 'learnpress' ), $tag ) );
839
- }
840
- }
841
-
842
- /**
843
- * @param string
844
- *
845
- * @return mixed
846
- * @throws Exception
847
- */
848
- public function is( $tag ) {
849
- $args = func_get_args();
850
- unset( $args[0] );
851
- $method = 'is_' . preg_replace( '!-!', '_', $tag );
852
- $callback = array( $this, $method );
853
- if ( is_callable( $callback ) ) {
854
- return call_user_func_array( $callback, $args );
855
- } else {
856
- throw new Exception( sprintf( __( 'The function %s doesn\'t exists', 'learnpress' ), $tag ) );
857
- }
858
- }
859
-
860
- /**
861
- * Return true if this course can be purchaseable
862
- *
863
- * @return mixed
864
- */
865
- public function is_purchasable() {
866
- // TODO: needs to check more criteria, currently only check if this course is required enrollment
867
- $is_purchasable = $this->is_required_enroll() && $this->post->post_status == 'publish';
868
- if ( $is_purchasable ) {
869
- $max_allowed = $this->max_students;
870
- if ( $max_allowed > 0 ) {
871
- $count_in_order = $this->count_in_order( array( 'completed', 'processing' ) );
872
- $is_purchasable = $is_purchasable && ( $count_in_order < $max_allowed );
873
- }
874
- }
875
- return apply_filters( 'learn_press_item_is_purchasable', $is_purchasable, $this->id );
876
- }
877
-
878
- public function count_in_order( $statuses = 'completed' ) {
879
- global $wpdb;
880
- settype( $statuses, 'array' );
881
- foreach ( $statuses as $k => $v ) {
882
- if ( !preg_match( '/^lp-/', $v ) ) {
883
- $statuses[$k] = 'lp-' . $v;
884
- }
885
- }
886
- $in_clause = join( ',', array_fill( 0, sizeof( $statuses ), '%s' ) );
887
- $query = $wpdb->prepare( "
888
- SELECT count(oim.meta_id)
889
- FROM {$wpdb->learnpress_order_itemmeta} oim
890
- INNER JOIN {$wpdb->learnpress_order_items} oi ON oi.order_item_id = oim.learnpress_order_item_id
891
- AND oim.meta_key = %s
892
- AND oim.meta_value = %d
893
- INNER JOIN {$wpdb->posts} o ON o.ID = oi.order_id
894
- WHERE o.post_type = %s
895
- AND o.post_status IN ($in_clause)
896
- ", array_merge( array( '_course_id', $this->id, 'lp_order' ), $statuses ) );
897
- return $wpdb->get_var( $query );
898
- }
899
-
900
- public function need_payment() {
901
- return $this->payment == 'yes';
902
- }
903
-
904
- public function has_item( $item_id ) {
905
- static $items = array();
906
- if ( empty( $items[$this->id] ) ) {
907
- $items[$this->id] = $this->get_curriculum_items( array( 'field' => 'ID'/*, 'force' => true */ ) );
908
- }
909
-
910
- return in_array( $item_id, (array) $items[$this->id] );
911
- }
912
-
913
- public function can_view_item( $item_id ) {
914
- switch ( get_post_type() ) {
915
- case LP_QUIZ_CPT:
916
- }
917
- }
918
-
919
- public function get_item( $thing = '' ) {
920
- $return = false;
921
- $curriculum = $this->get_curriculum_items();
922
- if ( !$curriculum ) {
923
- return $return;
924
- }
925
- if ( !$thing ) {
926
- return $return;
927
- }
928
- if ( $thing ) {
929
- if ( is_numeric( $thing ) ) {
930
- foreach ( $curriculum as $item ) {
931
- if ( $item->ID == $thing ) {
932
- switch ( $item->post_type ) {
933
- case LP_QUIZ_CPT:
934
- $return = new LP_Quiz( $item );
935
- break;
936
- case LP_LESSON_CPT:
937
- $return = new LP_Lesson( $item );
938
- break;
939
- }
940
- break;
941
- }
942
- }
943
- }
944
- }
945
- return apply_filters( 'learn_press_course_item', $return, $item, $this->id );
946
- }
947
-
948
- public function get_item_link( $item_id ) {
949
- static $item_links = array();
950
- $key = $this->id . '-' . $item_id;
951
- if ( empty( $item_links[$key] ) ) {
952
- if ( !$this->has( 'item', $item_id ) ) {
953
- return false;
954
- }
955
- $permalink = get_the_permalink( $item_id );
956
- $post_types = get_post_types( null, 'objects' );
957
- $item_type = get_post_type( $item_id );
958
- switch ( $item_type ) {
959
- case 'lp_lesson':
960
- case 'lp_quiz':
961
- $permalink = trailingslashit( get_the_permalink( $this->id ) );
962
- $post_name = get_post_field( 'post_name', $item_id );
963
- $prefix = preg_replace( '!^/!', '', trailingslashit( $post_types[$item_type]->rewrite['slug'] ) );//"{$item_id}-";
964
-
965
- if ( '' != get_option( 'permalink_structure' ) && get_post_status( $this->id ) != 'draft' ) {
966
- $permalink .= $prefix . $post_name;
967
- } else {
968
- $key = preg_replace( '!lp_!', '', get_post_type( $item_id ) );
969
- $permalink = add_query_arg( array( $key => $post_name ), $permalink );
970
- }
971
- break;
972
- }
973
- $permalink = trailingslashit( $permalink );
974
- $item_links[$key] = $permalink;
975
- }
976
- return apply_filters( 'learn_press_course_item_link', $item_links[$key], $item_id, $this );
977
- }
978
-
979
- public function get_next_item( $args = null ) {
980
- $args = wp_parse_args( $args, array(
981
- 'current_item' => false,
982
- 'dir' => 'next',
983
- 'viewable' => null
984
- ) );
985
- $items_types = apply_filters( 'learn_press_course_' . $args['dir'] . '_item_types', false, $this->id );
986
- if ( $items_types === false ) {
987
- $items = (array) $this->get_curriculum_items( array( 'field' => 'ID' ) );
988
- } else {
989
- $items = (array) $this->get_curriculum_items( array( 'field' => 'ID', 'group' => true ) );
990
- if ( !empty( $items[$items_types] ) ) {
991
- $items = array_values( $items[$items_types] );
992
- } else {
993
- $items = array();
994
- }
995
- }
996
- $items_len = sizeof( $items );
997
- if ( $items_len < 2 ) return false;
998
- $current_item = $args['current_item'] ? $args['current_item'] : ( $this->current_item ? $this->current_item->id : 0 );
999
- if ( !$current_item ) {
1000
- $current_item = reset( $items );
1001
- }
1002
- $next_item = false;
1003
- if ( ( $pos = array_search( $current_item, $items ) ) !== false ) {
1004
- if ( $args['dir'] == 'next' ) {
1005
- if ( $pos == sizeof( $items ) - 1 ) {
1006
- $next_item = false;
1007
- } else {
1008
- if ( $args['viewable'] !== null ) {
1009
- $user = learn_press_get_current_user();
1010
- for ( $i = $pos + 1; $i < $items_len; $i ++ ) {
1011
- if ( !!$user->can( 'view-item', $items[$i] ) === $args['viewable'] ) {
1012
- $next_item = $items[$i];
1013
- break;
1014
- }
1015
- }
1016
- } else {
1017
- $next_item = $items[$pos + 1];
1018
- }
1019
- }
1020
- } else {
1021
- if ( $pos == 0 ) {
1022
- $next_item = false;
1023
- } else {
1024
- if ( $args['viewable'] !== null ) {
1025
- $user = learn_press_get_current_user();
1026
- for ( $i = $pos - 1; $i >= 0; $i -- ) {
1027
- if ( !!$user->can( 'view-item', $items[$i] ) === $args['viewable'] ) {
1028
- $next_item = $items[$i];
1029
- break;
1030
- }
1031
- }
1032
- } else {
1033
- $next_item = $items[$pos - 1];
1034
- }
1035
- }
1036
- }
1037
- } else {
1038
- $next_item = $args['dir'] == 'next' ? $items[1] : $items[$items_len - 1];
1039
- }
1040
- return apply_filters( 'learn_press_course_' . $args['dir'] . '_item', $next_item, $current_item, $this );
1041
- }
1042
-
1043
- public function get_next_item_html( $args = null ) {
1044
- $args = wp_parse_args(
1045
- $args,
1046
- array(
1047
- 'current_item' => false,
1048
- 'viewable' => null,
1049
- 'dir' => 'next'
1050
- )
1051
- );
1052
- if ( $next_item = $this->get_next_item( $args ) ) {
1053
- ob_start();
1054
- learn_press_get_template( 'content-lesson/next-button.php', array( 'item' => $next_item, 'course' => $this ) );
1055
- return ob_get_clean();
1056
- }
1057
- return false;
1058
- }
1059
-
1060
- public function get_prev_item_html( $args = null ) {
1061
- $args = wp_parse_args(
1062
- $args,
1063
- array(
1064
- 'current_item' => false,
1065
- 'viewable' => null,
1066
- 'dir' => 'prev'
1067
- )
1068
- );
1069
- if ( $next_item = $this->get_next_item( $args ) ) {
1070
- ob_start();
1071
- learn_press_get_template( 'content-lesson/prev-button.php', array( 'item' => $next_item, 'course' => $this ) );
1072
- return ob_get_clean();
1073
- }
1074
- return false;
1075
- }
1076
-
1077
- /**
1078
- * @param int $user_id
1079
- * @param bool $force
1080
- *
1081
- * @return mixed|null|void
1082
- */
1083
- public function get_course_result_html( $user_id = 0, $force = false ) {
1084
- if ( !$user_id ) {
1085
- $user_id = get_current_user_id();
1086
- }
1087
- $html = '';
1088
- $quizzes = $this->get_quizzes();
1089
- if ( ( $this->course_result == 'evaluate_lesson' ) || !$quizzes ) {
1090
-
1091
- $lessons = $this->get_lessons();
1092
- $total_items = sizeof( $quizzes ) + sizeof( $lessons );
1093
-
1094
-
1095
- $html = sprintf( __( '%d of %d items completed', 'learnpress' ), $this->count_completed_items( $user_id, $force ), $total_items );
1096
- } else {
1097
- if ( $this->course_result == 'evaluate_final_quiz' ) {
1098
- $html = sprintf( __( '%d%% completed', 'learnpress' ), $this->_evaluate_course_by_quiz( $user_id, $force ) * 100 );
1099
- } else {
1100
- $html = sprintf( __( '%d%% completed', 'learnpress' ), $this->_evaluate_course_by_quizzes( $user_id, $force ) * 100 );
1101
- }
1102
- }
1103
- return apply_filters( 'learn_press_course_result_html', $html, $this->id, $user_id );
1104
- }
1105
-
1106
- protected function _evaluate_course_by_items( $user_id = 0, $force = false ) {
1107
- $items = $this->get_curriculum_items();
1108
- $result = 0;
1109
- if ( $items ) {
1110
- $completed_items = $this->count_completed_items( $user_id, $force );
1111
- $result = round( $completed_items / sizeof( $items ) * 100 );
1112
- }
1113
- return apply_filters( 'learn_press_course_results_by_items', $result, $this->id, $user_id );
1114
- }
1115
-
1116
- /**
1117
- * Calculate course results for user by course results settings
1118
- *
1119
- * @param int $user_id
1120
- * @param boolean $force
1121
- *
1122
- * @return mixed|null|void
1123
- */
1124
- public function evaluate_course_results( $user_id = 0, $force = false ) {
1125
- if ( !$user_id ) {
1126
- $user_id = get_current_user_id();
1127
- }
1128
-
1129
- $quizzes = $this->get_quizzes();
1130
-
1131
- if ( ( $this->course_result == 'evaluate_lesson' ) || !$quizzes ) {
1132
- $results = $this->_evaluate_course_by_items( $user_id, $force );//$this->_evaluate_course_by_lesson( $user_id, $force );
1133
- } else {
1134
- if ( $this->course_result == 'evaluate_final_quiz' ) {
1135
- $results = $this->_evaluate_course_by_quiz( $user_id, $force );
1136
- } else {
1137
- $results = $this->_evaluate_course_by_quizzes( $user_id, $force );
1138
- }
1139
- }
1140
- return apply_filters( 'learn_press_evaluation_course_results', $results );
1141
- }
1142
-
1143
- public function is_evaluation( $thing ) {
1144
- return $this->course_result == $thing;
1145
- }
1146
-
1147
- /**
1148
- * Get number of lessons user has completed
1149
- *
1150
- * @param $user_id
1151
- * @param bool $force
1152
- *
1153
- * @return int|mixed|null|void
1154
- */
1155
- public function get_completed_lessons( $user_id, $force = false ) {
1156
- //static $completed_lessons = array();
1157
- $key = $user_id . '-' . $this->id;
1158
-
1159
- $completed_lessons = LP_Cache::get_completed_lessons( false, array() );
1160
-
1161
- if ( !array_key_exists( $key, $completed_lessons ) || $force ) {
1162
- global $wpdb;
1163
- $course_lessons = $this->get_lessons( array( 'field' => 'ID' ) );
1164
- if ( !$course_lessons ) {
1165
- return 0;
1166
- }
1167
- $query = $wpdb->prepare( "
1168
- SELECT count(ul.item_id)
1169
- FROM {$wpdb->prefix}learnpress_user_items ul
1170
- INNER JOIN {$wpdb->posts} l ON l.ID = ul.item_id
1171
- WHERE ul.user_id = %d
1172
- AND status = %s
1173
- AND ul.ref_id = %d
1174
- AND ul.item_id IN(" . join( ",", $course_lessons ) . ")
1175
- ", $user_id, 'completed', $this->id );
1176
-
1177
- $completed_lessons[$key] = $wpdb->get_var( $query );
1178
-
1179
- LP_Cache::set_completed_lessons( $key, $completed_lessons[$key] );
1180
- }
1181
-
1182
- return apply_filters( 'learn_press_user_completed_lessons', $completed_lessons[$key], $this->id, $user_id );
1183
- }
1184
-
1185
- /**
1186
- * Calculate results of course by lesson user completed
1187
- *
1188
- * @param int $user_id
1189
- * @param boolean $force
1190
- *
1191
- * @return int|mixed|null|void
1192
- */
1193
- public function _evaluate_course_by_lesson( $user_id, $force = false ) {
1194
- //static $evaluate_course_by_lesson = array();
1195
- $evaluate_course_by_lesson = LP_Cache::get_evaluate_course_by_lesson( false, array() );
1196
- $key = $user_id . '-' . $this->id;
1197
- if ( !array_key_exists( $key, $evaluate_course_by_lesson ) || $force ) {
1198
- $course_lessons = $this->get_lessons( array( 'field' => 'ID' ) );
1199
- $completed_lessons = $this->get_completed_lessons( $user_id );
1200
- $evaluate_course_by_lesson[$key] = min( $completed_lessons / sizeof( $course_lessons ), 1 );
1201
- LP_Cache::set_evaluate_course_by_lesson( $key, $evaluate_course_by_lesson[$key] );
1202
- }
1203
- return apply_filters( 'learn_press_evaluation_course_lesson', $evaluate_course_by_lesson[$key], $this->id, $user_id );
1204
- }
1205
-
1206
- /**
1207
- * Get number of lessons user has completed
1208
- *
1209
- * @param $user_id
1210
- * @param array $items
1211
- * @param bool $force
1212
- *
1213
- * @return int|mixed|null|void
1214
- */
1215
- public function get_completed_items( $user_id = 0, $items = array(), $force = false ) {
1216
- if ( !$user_id ) {
1217
- $user_id = get_current_user_id();
1218
- }
1219
- //$completed_items = LP_Cache::get_completed_items( false, array() );
1220
- $key = $user_id . '-' . $this->id;
1221
-
1222
- $item_statuses = LP_Cache::get_item_statuses( false, array() );
1223
- $completed_items = array();
1224
- if ( $item_statuses ) {
1225
- if ( $curriculum_items = $this->post->curriculum_items ) {
1226
- $curriculum_items = maybe_unserialize( $curriculum_items );
1227
- foreach ( $curriculum_items as $item_id ) {
1228
- $k = sprintf( '%d-%d-%d', $user_id, $this->id, $item_id );
1229
- if ( !empty( $item_statuses[$k] ) && $item_statuses[$k] == 'completed' ) {
1230
- $completed_items[] = $item_id;
1231
- }
1232
- }
1233
- }
1234
- }
1235
- return apply_filters( 'learn_press_user_completed_items', $completed_items, $this->id, $user_id );
1236
- if ( !array_key_exists( $key, $completed_items ) || $force ) {
1237
- global $wpdb;
1238
- $course_items = $this->get_curriculum_items( array( 'field' => 'ID' ) );
1239
- if ( !$course_items ) {
1240
- return 0;
1241
- }
1242
- if ( $items ) {
1243
- $in_item_types = array_fill( 0, sizeof( $items ), '%s' );
1244
- $item_types = $wpdb->prepare( " AND item_type IN(" . join( ',', $in_item_types ) . ") ", $items );
1245
- } else {
1246
- $item_types = '';
1247
- }
1248
- $query = $wpdb->prepare( "
1249
- SELECT user_item_id, user_id, status, ref_id, item_id, item_type
1250
- FROM (SELECT * FROM {$wpdb->prefix}learnpress_user_items ORDER BY item_id, user_item_id DESC) x
1251
- GROUP BY item_id
1252
- HAVING user_id = %d
1253
- AND status = %s
1254
- AND ref_id = %d
1255
- AND item_id IN(" . join( ",", $course_items ) . ")
1256
- " . $item_types . "
1257
- ", $user_id, 'completed', $this->id );
1258
- $user_item_ids = $wpdb->get_col( $query );
1259
- $completed_items[$key] = $user_item_ids;
1260
- LP_Cache::set_completed_items( $completed_items );
1261
- }
1262
- return apply_filters( 'learn_press_user_completed_items', $completed_items[$key], $this->id, $user_id );
1263
- }
1264
-
1265
- /**
1266
- * @param int $user_id
1267
- * @param bool $force
1268
- *
1269
- * @return mixed|void
1270
- */
1271
- public function count_completed_items( $user_id = 0, $force = false ) {
1272
- $items = $this->get_completed_items( $user_id, $force );
1273
- $count = 0;
1274
- if ( $items ) {
1275
- $count = sizeof( $items );
1276
- }
1277
- return apply_filters( 'learn_press_count_user_completed_items', $count, $this->id, $user_id );
1278
- }
1279
-
1280
- /**
1281
- * Calculate results of course by final quiz
1282
- *
1283
- * @param int $user_id
1284
- * @param boolean $force
1285
- *
1286
- * @return mixed|null|void
1287
- */
1288
- public function _evaluate_course_by_quiz( $user_id, $force = false ) {
1289
- global $wpdb;
1290
- $result = $this->evaluate_quiz( $this->final_quiz, $user_id );
1291
- return apply_filters( 'learn_press_evaluation_course_quiz', $result, $this->id, $user_id );
1292
- }
1293
-
1294
- public function evaluate_quiz( $quiz_id, $user_id, $force = false ) {
1295
- $user = learn_press_get_user( $user_id );
1296
- $quiz = LP_Quiz::get_quiz( $quiz_id );
1297
- $results = $user->get_quiz_results( $quiz_id, $this->id );
1298
- if ( !$results ) {
1299
- $result = 0;
1300
- } else {
1301
- if ( $user->get_quiz_graduation( $quiz_id, $this->id ) == 'passed' && !empty( $results->mark_percent ) ) {
1302
- $result = absint( $results->mark_percent );
1303
- } else {
1304
- $result = 0;
1305
- }
1306
- }
1307
- return $result;
1308
- }
1309
-
1310
-
1311
- /**
1312
- * Calculate results of course by avg of all quizzes
1313
- *
1314
- * @param int $user_id
1315
- * @param boolean $force
1316
- *
1317
- * @return mixed
1318
- */
1319
- public function _evaluate_course_by_quizzes( $user_id, $force = false ) {
1320
- $quizzes = $this->get_quizzes();
1321
- $result = 0;
1322
- if ( $quizzes ) {
1323
- foreach ( $quizzes as $quiz ) {
1324
- $result += $this->evaluate_quiz( $quiz->ID, $user_id, $force );
1325
- }
1326
- $result = round( $result / sizeof( $quizzes ) );
1327
- }
1328
- return apply_filters( 'learn_press_evaluation_course_quizzes', $result, $this->id, $user_id );
1329
- }
1330
-
1331
- /**
1332
- * Get content of course item
1333
- *
1334
- * @param $item_id
1335
- *
1336
- * @return string
1337
- */
1338
- public function get_item_content( $item_id ) {
1339
- global $post;
1340
- $post = get_post( $item_id );
1341
-
1342
- // setup global post to apply all filters hook to content
1343
- setup_postdata( $post );
1344
-
1345
- // do shortcode
1346
- $content = do_shortcode( get_the_content() );
1347
-
1348
- // restore post content
1349
- wp_reset_postdata();
1350
- return $content;
1351
- }
1352
-
1353
- /**
1354
- * Get course duration in seconds
1355
- *
1356
- * @return int
1357
- */
1358
- public function get_duration() {
1359
- /**
1360
- * Duration is in string such as 10 week, 4 hour, etc...
1361
- * So we can use strtotime('+10 week') to convert it to seconds
1362
- */
1363
- return strtotime( "+" . $this->duration, 0 );
1364
- }
1365
-
1366
-
1367
- /**
1368
- * Get course remaining time message
1369
- *
1370
- * @param $user_id
1371
- *
1372
- * @return string
1373
- */
1374
- public function get_user_duration_html( $user_id = 0 ) {
1375
- if ( !$user_id ) {
1376
- $user_id = get_current_user_id();
1377
- }
1378
- $duration = $this->get_duration();
1379
- $user = learn_press_get_user( $user_id );
1380
- $course_info = $user->get_course_info( $this->id );
1381
- $html = '';
1382
- if ( $course_info ) {
1383
- $now = current_time( 'timestamp' );
1384
- $start_time = intval( strtotime( $course_info['start'] ) );
1385
- if ( $start_time + $duration > $now ) {
1386
- $remain = $start_time + $duration - $now;
1387
- $remain = learn_press_seconds_to_weeks( $remain );
1388
- $html = sprintf( __( 'This course will end within %s next', 'learnpress' ), $remain );
1389
- }
1390
- }
1391
- return $html;
1392
- }
1393
-
1394
- /**
1395
- * Get expired time of this course if user has enrolled
1396
- *
1397
- * @param int $user_id
1398
- *
1399
- * @return mixed|null|void
1400
- */
1401
- public function get_user_expired_time( $user_id = 0 ) {
1402
- if ( !$user_id ) {
1403
- $user_id = get_current_user_id();
1404
- }
1405
- $duration = $this->get_duration();
1406
- $user = learn_press_get_user( $user_id );
1407
- $course_info = $user->get_course_info( $this->id );
1408
- $start_time = intval( strtotime( $course_info['start'] ) );
1409
- if ( $duration == 0 ) {
1410
- $duration = DAY_IN_SECONDS * 365 * 100;
1411
- }
1412
- $expired = $start_time + $duration;
1413
- return apply_filters( 'learn_press_user_course_expired_time', $expired, $user_id, $this->id );
1414
- }
1415
-
1416
- /**
1417
- * Checks if this course has expired
1418
- *
1419
- * @param int $user_id
1420
- *
1421
- * @return mixed|null|void
1422
- */
1423
- public function is_expired( $user_id = 0 ) {
1424
- if ( !$user_id ) {
1425
- $user_id = get_current_user_id();
1426
- }
1427
- //echo "[".$this->get_user_expired_time( $user_id ), ',',current_time( 'timestamp' ),']';
1428
- return apply_filters( 'learn_press_user_course_expired', $this->get_user_expired_time( $user_id ) - current_time( 'timestamp' ) );
1429
- }
1430
-
1431
- /**
1432
- * Output params for single course page
1433
- *
1434
- * @param null $args
1435
- *
1436
- * @return mixed
1437
- */
1438
- public function output_args( $args = null ) {
1439
-
1440
- $args = wp_parse_args( $args, array( 'echo' => true, 'user_id' => get_current_user_id() ) );
1441
-
1442
- $user = learn_press_get_user( $args['user_id'] );
1443
-
1444
- $output = array(
1445
- 'id' => $this->id,
1446
- 'url' => $this->get_permalink(),
1447
- 'results' => $user->get_course_info( $this->id ),// $this->get_course_info( $args['user_id'] ),
1448
- 'current_item' => $this->is_viewing_item(),
1449
- 'items' => $this->get_items_params()
1450
- );
1451
-
1452
- $output = apply_filters( 'learn_press_single_course_params', $output, $this->id );
1453
- LP_Assets::add_var( 'LP_Course_Params', wp_json_encode( $output ), 'learn-press-single-course' );
1454
-
1455
- return $output;
1456
- }
1457
-
1458
- /**
1459
- * Get items params for single course params
1460
- */
1461
- public function get_items_params( $user_id = null ) {
1462
- global $wpdb;
1463
- $user = learn_press_get_current_user( $user_id );
1464
- $items = $this->get_curriculum_items(
1465
- array(
1466
- 'field' => array( 'item_id', 'item_type', 'post_title', 'section_id' ),
1467
- 'field_map' => array( 'id', 'type', 'title' ),
1468
- 'field_format' => array( '%d', '%s', '%s', '%d' )
1469
- )
1470
- );
1471
- if ( $items ) foreach ( $items as $k => $item ) {
1472
- if ( ( $view = $user->can( 'view-item', $item['id'] ) ) !== false ) {
1473
- $items[$k]['url'] = $this->get_item_link( $item['id'] );
1474
- $items[$k]['status'] = $user->get_item_status( $item['id'], $this->id );
1475
- if ( $view == 'preview' ) {
1476
-
1477
- }
1478
- } else {
1479
- $items[$k]['url'] = '';
1480
- $items[$k]['status'] = '';
1481
- }
1482
- }
1483
-
1484
- return $items;
1485
- }
1486
-
1487
-
1488
- public function get_video_embed() {
1489
- $video_id = $this->video_id;
1490
- $video_type = $this->video_type;
1491
-
1492
- if ( !$video_id || !$video_type ) {
1493
- return false;
1494
- }
1495
-
1496
- $embed = '';
1497
- $height = $this->video_embed_height;
1498
- $width = $this->video_embed_width;
1499
-
1500
- if ( 'youtube' === $video_type ) {
1501
- $embed = '<iframe width="' . $width . '" height="' . $height . '" '
1502
- . 'src="https://www.youtube.com/embed/' . $video_id . '" '
1503
- . 'frameborder="0" allowfullscreen></iframe>';
1504
-
1505
- } elseif ( 'vimeo' === $video_type ) {
1506
- $embed = '<iframe width="' . $width . '" height="' . $height . '" '
1507
- . ' src="https://player.vimeo.com/video/' . $video_id . '" '
1508
- . 'frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
1509
- }
1510
-
1511
- return $embed;
1512
- }
1513
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1514
  }
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit();
4
+
5
+ /**
6
+ * Class LP_Abstract_Course
7
+ */
8
+ abstract class LP_Abstract_Course {
9
+ /**
10
+ * The course (post) ID.
11
+ *
12
+ * @var int
13
+ */
14
+ public $id = 0;
15
+
16
+ /**
17
+ * $post Stores post data
18
+ *
19
+ * @var $post WP_Post
20
+ */
21
+ public $post = null;
22
+
23
+ /**
24
+ *
25
+ * @var string
26
+ */
27
+ public $course_type = null;
28
+
29
+ /**
30
+ * Course curriculum
31
+ *
32
+ * @var array
33
+ */
34
+ protected static $_curriculum = array();
35
+
36
+ /**
37
+ * @var null
38
+ */
39
+ protected $_count_users = null;
40
+
41
+ /**
42
+ * @var null
43
+ */
44
+ protected $_students_list = null;
45
+
46
+ /**
47
+ * @var array
48
+ */
49
+ protected static $_lessons = array();
50
+
51
+ /**
52
+ * Constructor gets the post object and sets the ID for the loaded course.
53
+ *
54
+ * @param int|LP_Course|object $course Course ID, post object, or course object
55
+ * @param int $user
56
+ */
57
+ public function __construct( $course, $user = 0 ) {
58
+ if ( is_numeric( $course ) ) {
59
+ $this->id = absint( $course );
60
+ $this->post = get_post( $this->id );
61
+ } elseif ( $course instanceof LP_Course ) {
62
+ $this->id = absint( $course->id );
63
+ $this->post = $course->post;
64
+ } elseif ( isset( $course->ID ) ) {
65
+ $this->id = absint( $course->ID );
66
+ $this->post = get_post( $course->ID );
67
+ }
68
+ if ( empty( self::$_lessons[$this->id] ) ) {
69
+ self::$_lessons[$this->id] = array();
70
+ }
71
+ if ( $user ) {
72
+ $this->init_for_user( $user );
73
+ }
74
+ }
75
+
76
+ public function init_for_user() {
77
+
78
+ }
79
+
80
+ /**
81
+ * __isset function.
82
+ *
83
+ * @param mixed $key
84
+ *
85
+ * @return bool
86
+ */
87
+ public function __isset( $key ) {
88
+ return metadata_exists( 'post', $this->id, '_' . $key );
89
+ }
90
+
91
+ /**
92
+ * __get function.
93
+ *
94
+ * @param string $key
95
+ *
96
+ * @return mixed
97
+ */
98
+ public function __get( $key ) {
99
+ if ( strcasecmp( $key, 'ID' ) == 0 ) {
100
+ $key = strtolower( $key );
101
+ }
102
+ if ( empty( $this->{$key} ) ) {
103
+ $value = false;
104
+ switch ( $key ) {
105
+ case 'current_item':
106
+ if ( !empty( LP()->global['course-item'] ) ) {
107
+ $value = LP()->global['course-item'];
108
+ }
109
+
110
+ break;
111
+ case 'current_lesson':
112
+ $lesson_id = ( ( $lesson_id = learn_press_get_request( "lesson_id" ) ) && $this->has( 'item', $lesson_id ) ) ? $lesson_id : null;
113
+ if ( $lesson_id ) {
114
+ $value = LP_Lesson::get_lesson( $lesson_id );
115
+ }
116
+ break;
117
+ case 'permalink':
118
+ $value = get_the_permalink( $this->id );
119
+ break;
120
+ case 'duration':
121
+ $value = get_post_meta( $this->id, '_lp_' . $key, true );
122
+ $duration = learn_press_get_course_duration_support();
123
+ $duration_keys = array_keys( $duration );
124
+ if ( !preg_match_all( '!([0-9]+)\s(' . join( '|', $duration_keys ) . ')!', $value, $matches ) ) {
125
+ $a1 = absint( $value );
126
+ $a2 = end( $duration_keys );
127
+ $value = $a1 . ' ' . $a2;
128
+ update_post_meta( $this->id, '_lp_' . $key, $value );
129
+ }
130
+ break;
131
+ default: // default is get course meta key
132
+ if ( func_num_args() > 1 ) {
133
+ $single = func_get_arg( 1 );
134
+ if ( $single !== false && $single !== true ) {
135
+ $single = true;
136
+ }
137
+ } else {
138
+ $single = true;
139
+ }
140
+ $value = get_post_meta( $this->id, '_lp_' . $key, $single );
141
+ if ( ( $key == 'price' || $key == 'total' ) && get_post_meta( $this->id, '_lp_payment', true ) != 'yes' ) {
142
+ $value = 0;
143
+ }
144
+
145
+ }
146
+ if ( !empty( $value ) ) {
147
+ $this->$key = $value;
148
+ }
149
+ }
150
+ return !empty( $this->$key ) ? $this->$key : null;
151
+ }
152
+
153
+ /**
154
+ * Get course thumbnail, return placeholder if it does not exists
155
+ *
156
+ * @param string $size
157
+ * @param array $attr
158
+ *
159
+ * @return mixed|null|void
160
+ */
161
+ public function get_image( $size = 'course_thumbnail', $attr = array() ) {
162
+ $attr = wp_parse_args(
163
+ $attr,
164
+ array(
165
+ 'alt' => $this->get_title()
166
+ )
167
+ );
168
+ $image = false;
169
+ if ( has_post_thumbnail( $this->id ) ) {
170
+ $image = get_the_post_thumbnail( $this->id, $size, $attr );
171
+ } elseif ( ( $parent_id = wp_get_post_parent_id( $this->id ) ) && has_post_thumbnail( $parent_id ) ) {
172
+ $image = get_the_post_thumbnail( $parent_id, $size, $attr );
173
+ }
174
+ if ( !$image ) {
175
+ if ( 'course_thumbnail' == $size ) {
176
+ $image = LP()->image( 'placeholder-400x250' );
177
+ } else {
178
+ $image = LP()->image( 'placeholder-800x450' );
179
+ }
180
+ $image = sprintf( '<img src="%s" %s />', $image, '' );
181
+ }
182
+ return apply_filters( 'learn_press_course_image', $image, $this->id, $size, $attr );
183
+ }
184
+
185
+ public function get_permalink() {
186
+ return $this->permalink;
187
+ }
188
+
189
+ public function is_visible() {
190
+ return true;
191
+ }
192
+
193
+ public function get_request_item( $field = 'id' ) {
194
+ $return = LP()->global['course-item'];
195
+ if ( !empty( $_REQUEST['course-item'] ) ) {
196
+ $type = $_REQUEST['course-item'];
197
+ if ( $field == 'type' ) {
198
+ $return = $type;
199
+ } elseif ( $field == 'id' ) {
200
+ $return = !empty( $_REQUEST[$type . '_id'] ) ? $_REQUEST[$type . '_id'] : 0;
201
+ } elseif ( $field == 'name' ) {
202
+ $return = !empty( $_REQUEST[$type] ) ? $_REQUEST[$type] : false;
203
+ }
204
+ }
205
+ return $return;
206
+ }
207
+
208
+ /**
209
+ * Get the course's post data.
210
+ *
211
+ * @return object
212
+ */
213
+ public function get_course_data() {
214
+ return $this->post;
215
+ }
216
+
217
+ /**
218
+ *
219
+ * @return mixed
220
+ */
221
+ public function is_enrollable() {
222
+ $enrollable = true;
223
+
224
+ // Products must exist of course
225
+ if ( !$this->exists() ) {
226
+ $enrollable = false;
227
+ // Check the product is published
228
+ } elseif ( $this->post->post_status !== 'publish' && !current_user_can( 'edit_post', $this->id ) ) {
229
+ $enrollable = false;
230
+ }
231
+
232
+ return apply_filters( 'learn_press_is_enrollable', $enrollable, $this );
233
+ }
234
+
235
+ /**
236
+ * Course is exists if the post is not empty
237
+ *
238
+ * @return bool
239
+ */
240
+ public function exists() {
241
+ return empty( $this->post ) ? false : true;
242
+ }
243
+
244
+ /**
245
+ * The course is require enrollment or not
246
+ *
247
+ * @return bool
248
+ */
249
+ public function is_require_enrollment() {
250
+ return $this->is_required_enroll();
251
+ }
252
+
253
+ /**
254
+ * Check if this course is required to enroll
255
+ *
256
+ * @param mixed
257
+ *
258
+ * @return bool
259
+ */
260
+ public function is_required_enroll() {
261
+
262
+ if ( func_get_args() ) {
263
+ $required = $this->required_enroll == func_get_arg( 0 );
264
+ } else {
265
+ $required = $this->required_enroll !== 'no';
266
+ }
267
+ $required = $required || ( $this->payment == 'yes' );
268
+
269
+ return apply_filters( 'learn_press_course_required_enroll', $required, $this );
270
+ }
271
+
272
+ private function _get_posts_by_id( $ids ) {
273
+ global $wpdb;
274
+ settype( $ids, 'array' );
275
+ $posts = $wpdb->get_results( "
276
+ SELECT *
277
+ FROM {$wpdb->posts}
278
+ WHERE ID IN(" . join( ',', $ids ) . ")
279
+ " );
280
+ return $posts;
281
+ }
282
+
283
+ public function get_title() {
284
+ return apply_filters( 'learn_press_course_title', $this->post ? $this->post->post_title : '', $this );
285
+ }
286
+
287
+ public function get_description() {
288
+ return apply_filters( 'the_content', $this->post->post_content );
289
+ }
290
+
291
+ /**
292
+ * Get all curriculum of this course
293
+ *
294
+ * @param int $section_id
295
+ * @param bool $force
296
+ *
297
+ * @return mixed
298
+ */
299
+ public function get_curriculum( $section_id = 0, $force = false ) {
300
+ if ( !$this->id ) {
301
+ return false;
302
+ }
303
+ if ( false ) {
304
+ $curriculum = LP_Cache::get_course_curriculum( false, array() );
305
+
306
+ if ( !array_key_exists( $this->id, $curriculum ) || $force ) {
307
+ global $wpdb;
308
+
309
+ $curriculum[$this->id] = array();
310
+ $query = $wpdb->prepare( "
311
+ SELECT cc.*
312
+ FROM {$wpdb->posts} p
313
+ INNER JOIN {$wpdb->learnpress_sections} cc ON p.ID = cc.section_course_id
314
+ WHERE p.ID = %d
315
+ ORDER BY `section_order` ASC
316
+ ", $this->id );
317
+ if ( $rows = $wpdb->get_results( $query, OBJECT_K ) ) {
318
+ $section_ids = array_keys( $rows );
319
+ $how_many = count( $section_ids );
320
+ $placeholders = array_fill( 0, $how_many, '%d' );
321
+ $in = implode( ', ', $placeholders );
322
+
323
+ $query = $wpdb->prepare( "
324
+ SELECT si.*, p.*
325
+ FROM {$wpdb->posts} p
326
+ INNER JOIN {$wpdb->prefix}learnpress_section_items si ON si.item_id = p.ID
327
+ INNER JOIN {$wpdb->prefix}learnpress_sections s ON s.section_id = si.section_id
328
+ WHERE s.section_id IN( $in )
329
+ ORDER BY s.section_order, si.item_order ASC
330
+ ", $section_ids );
331
+ $section_items = $wpdb->get_results( $query );
332
+ $post_ids = array();
333
+ foreach ( $rows as $row ) {
334
+ $section = $row;
335
+ $section->items = array();
336
+ if ( $section_items ) {
337
+ $count = 0;
338
+ foreach ( $section_items as $item ) {
339
+ if ( $item->section_id == $row->section_id ) {
340
+ $section->items[] = $item;
341
+ /**
342
+ * Add item to 'posts' cache group
343
+ */
344
+ $item_post = wp_cache_get( $item->ID, 'posts' );
345
+ if ( !$item_post ) {
346
+ wp_cache_add( $item->ID, $item, 'posts' );
347
+ }
348
+ $post_ids[] = $item->ID;
349
+ $count ++;
350
+ } else {
351
+ if ( $count ) break;
352
+ }
353
+ }
354
+ }
355
+ $curriculum[$this->id][$section->section_id] = $section;
356
+ }
357
+ // update all meta data into cache
358
+ update_meta_cache( 'post', $post_ids );
359
+ //SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN
360
+ }
361
+ }
362
+ LP_Cache::set_course_curriculum( $curriculum );
363
+ $return = false;
364
+ if ( $section_id ) {
365
+ if ( !empty( $curriculum[$this->id][$section_id] ) ) {
366
+ $return = $curriculum[$this->id][$section_id];
367
+ }
368
+ } else {
369
+ $return = $curriculum[$this->id];
370
+ }
371
+ } // end if(false)
372
+ else {
373
+ $curriculum = _learn_press_get_course_curriculum( $this->id, $force );
374
+ $return = false;
375
+ if ( $section_id ) {
376
+ if ( !empty( $curriculum[$section_id] ) ) {
377
+ $return = $curriculum[$section_id];
378
+ }
379
+ } else {
380
+ $return = $curriculum;
381
+ }
382
+ }
383
+ return apply_filters( 'learn_press_course_curriculum', $return, $this->id, $section_id );
384
+ }
385
+
386
+ /**
387
+ * Count the total of students has enrolled course
388
+ *
389
+ * @param string (null|append|swaps)
390
+ *
391
+ * @return mixed
392
+ */
393
+ public function count_users_enrolled( $count_db = '' ) {
394
+
395
+ // Get students enrolled from settings of the course that owns course want to show
396
+ // So, if this value is set that means the result is fake ... :)
397
+ $enrolled = $this->students;
398
+
399
+
400
+ // But, if it is not set then we count the real value from DB
401
+ if ( $count_db ) {
402
+ $real_enrolled = $this->get_users_enrolled();
403
+ if ( $count_db == 'append' ) {
404
+ $enrolled += $real_enrolled;
405
+ } elseif ( $count_db == 'swaps' && $real_enrolled ) {
406
+ $enrolled = $real_enrolled;
407
+ }
408
+ }
409
+ return apply_filters( 'learn_press_count_users_enrolled', $enrolled, $this );
410
+ }
411
+
412
+ /**
413
+ * Count the real users has enrolled
414
+ *
415
+ * @param bool $force
416
+ *
417
+ * @return int
418
+ */
419
+ public function get_users_enrolled( $force = false ) {
420
+
421
+ global $wpdb;
422
+ if ( $this->_count_users === null || $force ) {
423
+ $query = $wpdb->prepare( "
424
+ SELECT count(o.ID)
425
+ FROM {$wpdb->posts} o
426
+ INNER JOIN {$wpdb->learnpress_order_items} oi ON oi.order_id = o.ID
427
+ INNER JOIN {$wpdb->learnpress_order_itemmeta} oim ON oim.learnpress_order_item_id = oi.order_item_id
428
+ AND oim.meta_key = %s AND oim.meta_value = %d
429
+ WHERE o.post_status = %s
430
+ ", '_course_id', $this->id, 'lp-completed' );
431
+ $this->_count_users = $wpdb->get_var( $query );
432
+ }
433
+ return $this->_count_users;
434
+ }
435
+
436
+ /**
437
+ * Output html for students enrolled counter
438
+ *
439
+ * @param int Optional - user ID
440
+ *
441
+ * @return string
442
+ */
443
+ public function get_students_html( $user_id = null ) {
444
+ $output = '';
445
+ if ( $count = $this->count_users_enrolled( 'append' ) ):
446
+ $course_info = $this->get_course_info( $user_id );
447
+ if ( $course_info['status'] ):
448
+ if ( $count == 1 ):
449
+ $output .= __( 'You enrolled', 'learnpress' );
450
+ else:
451
+ $output .= sprintf( _nx( 'You and one student enrolled', 'You and <span class="course-students-number">%1$s</span> students enrolled', intval( $count - 1 ), '', 'learnpress' ), $count - 1 );
452
+ endif;
453
+ $output = apply_filters( 'learn_press_students_enrolled_html', $output, $this );
454
+ else:
455
+ $output = sprintf( _nx( 'One student enrolled', '<span class="course-students-number">%1$s</span> students enrolled', $count, '', 'learnpress' ), $count );
456
+ $output = apply_filters( 'learn_press_one_student_enrolled_html', $output, $this );
457
+ endif;
458
+ else:
459
+ $output = apply_filters( 'learn_press_no_student_enrolled_html', __( 'No student enrolled', 'learnpress' ), $this );
460
+ endif;
461
+ return $output;
462
+ }
463
+
464
+ public function get_instructor() {
465
+ $user_data = get_userdata( $this->post->post_author );
466
+ $author_name = '';
467
+ if ( $user_data ) {
468
+ $author_name = $user_data->display_name;
469
+ }
470
+ return apply_filters( 'learn_press_course_instructor', $author_name, $this->id );
471
+ }
472
+
473
+ public function get_instructor_html() {
474
+ $instructor = $this->get_instructor();
475
+ $html = sprintf(
476
+ '<a href="%s">%s</a>',
477
+ learn_press_user_profile_link( $this->post->post_author ),
478
+ $instructor
479
+ );
480
+ return apply_filters( 'learn_press_course_instructor_html', $html, $this->post->post_author, $this->id );
481
+ }
482
+
483
+ public function get_course_info( $user_id = null ) {
484
+ if ( !$user_id ) {
485
+ $user_id = get_current_user_id();
486
+ }
487
+ $user = learn_press_get_user( $user_id );
488
+ return $user->get_course_info( $this->id );
489
+ }
490
+
491
+ /**
492
+ * Check if a course is FREE or need to pay or enroll
493
+ *
494
+ * @return bool
495
+ */
496
+ public function is_free() {
497
+ $is_free = ( 'no' == $this->payment || ( 0 >= $this->get_price() ) );
498
+ return apply_filters( 'learn_press_is_free_course', $is_free, $this );
499
+ }
500
+
501
+ /**
502
+ * Get the origin price of course
503
+ * @return mixed
504
+ */
505
+ public function get_origin_price() {
506
+ $price = $this->price;
507
+ if ( !$price || 'yes' != $this->payment ) {
508
+ $price = 0;
509
+ } else {
510
+ $price = floatval( $price );
511
+ }
512
+ return $price;
513
+ }
514
+
515
+ /**
516
+ * Get the sale price of course
517
+ * @return mixed
518
+ */
519
+ public function get_sale_price() {
520
+ $res = null;
521
+ $sale_price = get_post_meta( $this->id, '_lp_sale_price', true );
522
+ if ( 'yes' == $this->payment && is_numeric( $sale_price ) ) {
523
+ $sale_price = floatval( $sale_price );
524
+ $start_date = get_post_meta( $this->id, '_lp_sale_start', true );
525
+ $end_date = get_post_meta( $this->id, '_lp_sale_end', true );
526
+ $now = current_time( 'timestamp' );
527
+ $end = strtotime( $end_date );
528
+ $start = strtotime( $start_date );
529
+ if ( ( $now >= $start || !$start_date ) && ( $now <= $end || !$end_date ) && $sale_price ) {
530
+ $res = $sale_price;
531
+ }
532
+ }
533
+ return $res;
534
+ }
535
+
536
+ /**
537
+ * Get the price of course
538
+ *
539
+ * @return mixed
540
+ */
541
+ public function get_price() {
542
+ $price = $this->price;
543
+ if ( !$price || 'yes' != $this->payment ) {
544
+ $price = 0;
545
+ } else {
546
+ $price = floatval( $price );
547
+ $sale_price = $this->get_sale_price();
548
+ if ( is_numeric( $sale_price ) ) {
549
+ $price = $sale_price;
550
+ }
551
+ }
552
+ return apply_filters( 'learn_press_course_price', $price, $this );
553
+ }
554
+
555
+ /**
556
+ * Get the price of course with html
557
+ *
558
+ * @return mixed
559
+ */
560
+ public function get_price_html() {
561
+
562
+ if ( $this->is_free() ) {
563
+ $price_html = apply_filters( 'learn_press_course_price_html_free', __( 'Free', 'learnpress' ), $this );
564
+ } else {
565
+ $price = $this->get_price();
566
+ $price = learn_press_format_price( $price, true );
567
+ $price_html = apply_filters( 'learn_press_course_price_html', $price, $this );
568
+ }
569
+ return $price_html;
570
+ }
571
+
572
+
573
+ /**
574
+ * Get the price of course with html
575
+ *
576
+ * @return mixed
577
+ */
578
+ public function get_origin_price_html() {
579
+ $origin_price_html = '';
580
+ if ( !$this->is_free() ) {
581
+ $origin_price = $this->get_origin_price();
582
+ $origin_price = learn_press_format_price( $origin_price, true );
583
+ $origin_price_html = apply_filters( 'learn_press_course_origin_price_html', $origin_price, $this );
584
+ }
585
+ return $origin_price_html;
586
+ }
587
+
588
+ /**
589
+ * @param $limit int limit of records
590
+ * @param $force boolean force to query database
591
+ *
592
+ * @return array list enrolled students
593
+ */
594
+ public function get_students_list( $force = false, $limit = - 1 ) {
595
+ if ( !$this->exists() ) return null;
596
+
597
+ global $wpdb;
598
+ if ( $limit < 0 ) $limit = PHP_INT_MAX;
599
+
600
+ if ( $this->_students_list === null || $force ) {
601
+ $query = $wpdb->prepare( "
602
+ SELECT DISTINCT u.*
603
+ FROM {$wpdb->users} u
604
+ INNER JOIN {$wpdb->prefix}learnpress_user_items ui ON ui.user_id = u.ID
605
+ WHERE ui.item_id = %d
606
+ AND ui.item_type = %s
607
+ LIMIT %d
608
+ ", $this->id, LP_COURSE_CPT, $limit );
609
+ $this->_students_list = $wpdb->get_results( $query );
610
+ }
611
+ return $this->_students_list;
612
+
613
+ }
614
+
615
+
616
+ /**
617
+ * Get all quizzes in a course
618
+ *
619
+ * @param string
620
+ *
621
+ * @return array
622
+ */
623
+ public function get_quizzes( $field = null ) {
624
+ $items = $this->get_curriculum_items(
625
+ array(
626
+ 'force' => false,
627
+ 'group' => true,
628
+ 'field' => $field
629
+ )
630
+ );
631
+ $quizzes = !empty( $items['quizzes'] ) ? $items['quizzes'] : false;
632
+ return apply_filters( 'learn_press_course_quizzes', $quizzes, $this );
633
+ }
634
+
635
+ /**
636
+ * Get all lessons in a course
637
+ *
638
+ * @param mixed
639
+ *
640
+ * @return array
641
+ */
642
+ public function get_lessons( $args = null ) {
643
+ $args = wp_parse_args(
644
+ $args,
645
+ array(
646
+ 'field' => ''
647
+ )
648
+ );
649
+ $curriculum_args = array_merge(
650
+ array(
651
+ 'force' => false,
652
+ 'group' => true
653
+ ),
654
+ $args
655
+ );
656
+ $items = $this->get_curriculum_items( $curriculum_args );
657
+ $lessons = !empty( $items['lessons'] ) ? $items['lessons'] : false;
658
+ return apply_filters( 'learn_press_course_lessons', $lessons, $this );
659
+ }
660
+
661
+ /**
662
+ * Get all items in a course
663
+ *
664
+ * @param array $args {
665
+ * force bool Force to get curriculum items that does not care for it is already existing in memory or not
666
+ * group bool Group the items returned by type of each item
667
+ * field string The fields want to get
668
+ * }
669
+ *
670
+ * @return array
671
+ */
672
+ public function get_curriculum_items( $args = array() ) {
673
+
674
+ // default value for $args
675
+ $force = false;
676
+ $group = false;
677
+ $field = '';
678
+ $field_map = '';
679
+ $field_format = '';
680
+
681
+ $args = wp_parse_args(
682
+ $args,
683
+ array(
684
+ 'force' => false,
685
+ 'group' => false,
686
+ 'field' => '',
687
+ 'field_map' => '',
688
+ 'field_format' => ''
689
+ )
690
+ );
691
+ $lessons = array();
692
+ $quizzes = array();
693
+
694
+ // overwrite default values with params passed
695
+ extract( $args );
696
+ $items = array();
697
+ if ( !$this->_curriculum_items || $force ) {
698
+ $curriculum = $this->get_curriculum( null, $force );
699
+ $index = 0;
700
+ if ( !empty( $field ) ) {
701
+ if ( is_string( $field ) ) {
702
+ $field = explode( '![\s]+!', $field );
703
+ }
704
+ settype( $field, 'array' );
705
+ } else {
706
+ $field = false;
707
+ }
708
+ if ( !empty( $field_map ) ) {
709
+ if ( is_string( $field_map ) ) {
710
+ $field_map = explode( '![\s]+!', $field_map );
711
+ }
712
+ settype( $field_map, 'array' );
713
+ } else {
714
+ $field_map = false;
715
+ }
716
+ if ( !empty( $field_format ) ) {
717
+ if ( is_string( $field_format ) ) {
718
+ $field_format = explode( '![\s]+!', $field_format );
719
+ }
720
+ settype( $field_format, 'array' );
721
+ } else {
722
+ $field_format = false;
723
+ }
724
+ //if( is_array( $field ) ) $field = array_map( $field, 'strtolower' );
725
+ if ( $curriculum ) foreach ( $curriculum as $section ) {
726
+ if ( empty( $section->items ) ) continue;
727
+ foreach ( $section->items as $loop_item ) {
728
+ $loop_item->section_id = $section->section_id;
729
+ if ( $field ) {
730
+ $item = array();
731
+ $item_array = (array) $loop_item;
732
+ foreach ( $field as $k => $field_name ) {
733
+ if ( array_key_exists( $field_name, $item_array ) ) {
734
+ if ( $field_map && !empty( $field_map[$k] ) ) {
735
+ $map_key = $field_map[$k];
736
+ } else {
737
+ $map_key = $field_name;
738
+ }
739
+ if ( $field_format && !empty( $field_format[$k] ) ) {
740
+ if ( $field_format[$k] == '%d' ) {
741
+ $item[$map_key] = strpos( '.', $item_array[$field_name] ) !== false ? floatval( $item_array[$field_name] ) : intval( $item_array[$field_name] );
742
+ } elseif ( $field_format[$k] == '%s' ) {
743
+ $item[$map_key] = (string) $item_array[$field_name];
744
+ }
745
+ } else {
746
+ $item[$map_key] = $item_array[$field_name];
747
+ }
748
+ //break;
749
+ }
750
+ }
751
+ if ( sizeof( $item ) == 1 ) {
752
+ $item = reset( $item );
753
+ }
754
+ } else {
755
+ $item = $loop_item;
756
+ }
757
+ if ( $loop_item->post_type == LP_LESSON_CPT ) {
758
+ $lessons[$index] = $item;
759
+ } else {
760
+ $quizzes[$index] = $item;
761
+ }
762
+ $index ++;
763
+ }
764
+ }
765
+ // group
766
+ if ( $group ) {
767
+ $items = array(
768
+ 'quizzes' => $quizzes,
769
+ 'lessons' => $lessons
770
+ );
771
+ } else {
772
+ // combine lessons and quizzes as it should be in curriculum
773
+ for ( $i = 0, $n = sizeof( $quizzes ) + sizeof( $lessons ); $i < $n; $i ++ ) {
774
+ if ( !empty( $quizzes[$i] ) ) {
775
+ $items[] = $quizzes[$i];
776
+ } elseif ( !empty( $lessons[$i] ) ) {
777
+ $items[] = $lessons[$i];
778
+ }
779
+ }
780
+ }
781
+ }
782
+ return apply_filters( 'learn_press_get_course_items', $items, $this );
783
+ }
784
+
785
+ public function is_viewing( $content = '' ) {
786
+
787
+ $item_type = !empty( $_REQUEST['course-item'] ) ? $_REQUEST['course-item'] : '';
788
+ $viewing = apply_filters( 'learn_press_course_is_viewing', $item_type ? $item_type : 'course' );
789
+ if ( $content ) {
790
+ return $content == $viewing;
791
+ }
792
+ return $viewing;
793
+ }
794
+
795
+ public function is_viewing_item( $item_id = false ) {
796
+ $item = LP()->global['course-item'];//$this->get_request_item();
797
+ $return = false;
798
+ if ( $item ) {
799
+ if ( $item_id ) {
800
+ $return = $item_id == $item->ID;
801
+ } else {
802
+ $return = $item->ID;
803
+ }
804
+ }
805
+ return apply_filters( 'learn_press_viewing_course_item', $return, $item_id, $this->id );
806
+ }
807
+
808
+ public function is_current_item( $item_id ) {
809
+ /*$item_type = !empty( $_REQUEST['course-item'] ) ? $_REQUEST['course-item'] : '';
810
+ $view_id = 0;
811
+ if ( $item_type ) {
812
+ if ( !empty( $_REQUEST[$item_type . '_id'] ) ) {
813
+ $view_id = $_REQUEST[$item_type . '_id'];
814
+ }
815
+ }*/
816
+ $current_item = $this->current_item;
817
+ $view_id = $current_item ? $current_item->ID : 0;
818
+ return apply_filters( 'learn_press_is_current_course_item', $view_id == $item_id, $item_id, $view_id, $this->id );
819
+ }
820
+
821
+ /**
822
+ * Check if the course has 'feature'
823
+ * This function call to a function with prefix 'has'
824
+ *
825
+ * @param string
826
+ *
827
+ * @return mixed
828
+ * @throws Exception
829
+ */
830
+ public function has( $tag ) {
831
+ $args = func_get_args();
832
+ unset( $args[0] );
833
+ $method = 'has_' . preg_replace( '!-!', '_', $tag );
834
+ $callback = array( $this, $method );
835
+ if ( is_callable( $callback ) ) {
836
+ return call_user_func_array( $callback, $args );
837
+ } else {
838
+ throw new Exception( sprintf( __( 'The function %s doesn\'t exists', 'learnpress' ), $tag ) );
839
+ }
840
+ }
841
+
842
+ /**
843
+ * @param string
844
+ *
845
+ * @return mixed
846
+ * @throws Exception
847
+ */
848
+ public function is( $tag ) {
849
+ $args = func_get_args();
850
+ unset( $args[0] );
851
+ $method = 'is_' . preg_replace( '!-!', '_', $tag );
852
+ $callback = array( $this, $method );
853
+ if ( is_callable( $callback ) ) {
854
+ return call_user_func_array( $callback, $args );
855
+ } else {
856
+ throw new Exception( sprintf( __( 'The function %s doesn\'t exists', 'learnpress' ), $tag ) );
857
+ }
858
+ }
859
+
860
+ /**
861
+ * Return true if this course can be purchaseable
862
+ *
863
+ * @return mixed
864
+ */
865
+ public function is_purchasable() {
866
+ // TODO: needs to check more criteria, currently only check if this course is required enrollment
867
+ $is_purchasable = $this->is_required_enroll() && $this->post->post_status == 'publish';
868
+ if ( $is_purchasable ) {
869
+ $max_allowed = $this->max_students;
870
+ if ( $max_allowed > 0 ) {
871
+ $count_in_order = $this->count_in_order( array( 'completed', 'processing' ) );
872
+ $is_purchasable = $is_purchasable && ( $count_in_order < $max_allowed );
873
+ }
874
+ }
875
+ return apply_filters( 'learn_press_item_is_purchasable', $is_purchasable, $this->id );
876
+ }
877
+
878
+ public function count_in_order( $statuses = 'completed' ) {
879
+ global $wpdb;
880
+ settype( $statuses, 'array' );
881
+ foreach ( $statuses as $k => $v ) {
882
+ if ( !preg_match( '/^lp-/', $v ) ) {
883
+ $statuses[$k] = 'lp-' . $v;
884
+ }
885
+ }
886
+ $in_clause = join( ',', array_fill( 0, sizeof( $statuses ), '%s' ) );
887
+ $query = $wpdb->prepare( "
888
+ SELECT count(oim.meta_id)
889
+ FROM {$wpdb->learnpress_order_itemmeta} oim
890
+ INNER JOIN {$wpdb->learnpress_order_items} oi ON oi.order_item_id = oim.learnpress_order_item_id
891
+ AND oim.meta_key = %s
892
+ AND oim.meta_value = %d
893
+ INNER JOIN {$wpdb->posts} o ON o.ID = oi.order_id
894
+ WHERE o.post_type = %s
895
+ AND o.post_status IN ($in_clause)
896
+ ", array_merge( array( '_course_id', $this->id, 'lp_order' ), $statuses ) );
897
+ return $wpdb->get_var( $query );
898
+ }
899
+
900
+ public function need_payment() {
901
+ return $this->payment == 'yes';
902
+ }
903
+
904
+ public function has_item( $item_id ) {
905
+ static $items = array();
906
+ if ( empty( $items[$this->id] ) ) {
907
+ $items[$this->id] = $this->get_curriculum_items( array( 'field' => 'ID'/*, 'force' => true */ ) );
908
+ }
909
+
910
+ return in_array( $item_id, (array) $items[$this->id] );
911
+ }
912
+
913
+ public function can_view_item( $item_id ) {
914
+ switch ( get_post_type() ) {
915
+ case LP_QUIZ_CPT:
916
+ }
917
+ }
918
+
919
+ public function get_item( $thing = '' ) {
920
+ $return = false;
921
+ $curriculum = $this->get_curriculum_items();
922
+ if ( !$curriculum ) {
923
+ return $return;
924
+ }
925
+ if ( !$thing ) {
926
+ return $return;
927
+ }
928
+ if ( $thing ) {
929
+ if ( is_numeric( $thing ) ) {
930
+ foreach ( $curriculum as $item ) {
931
+ if ( $item->ID == $thing ) {
932
+ switch ( $item->post_type ) {
933
+ case LP_QUIZ_CPT:
934
+ $return = new LP_Quiz( $item );
935
+ break;
936
+ case LP_LESSON_CPT:
937
+ $return = new LP_Lesson( $item );
938
+ break;
939
+ }
940
+ break;
941
+ }
942
+ }
943
+ }
944
+ }
945
+ return apply_filters( 'learn_press_course_item', $return, $item, $this->id );
946
+ }
947
+
948
+ public function get_item_link( $item_id ) {
949
+ static $item_links = array();
950
+ $key = $this->id . '-' . $item_id;
951
+ if ( empty( $item_links[$key] ) ) {
952
+ if ( !$this->has( 'item', $item_id ) ) {
953
+ return false;
954
+ }
955
+ $permalink = get_the_permalink( $item_id );
956
+ $post_types = get_post_types( null, 'objects' );
957
+ $item_type = get_post_type( $item_id );
958
+ switch ( $item_type ) {
959
+ case 'lp_lesson':
960
+ case 'lp_quiz':
961
+ $permalink = trailingslashit( get_the_permalink( $this->id ) );
962
+ $post_name = get_post_field( 'post_name', $item_id );
963
+ $slug = $post_types[$item_type]->rewrite['slug'];
964
+
965
+ // $custom_prefix = '';
966
+ //
967
+ // if ( $slug === 'lessons' ) {
968
+ // $custom_prefix = LP()->settings->get( 'lesson_slug' );
969
+ // }
970
+ // else if ( $slug === 'quizzes' ) {
971
+ // $custom_prefix = LP()->settings->get( 'quizzes_slug' );
972
+ // }
973
+ //
974
+ // if ( !empty( $custom_prefix ) ) {
975
+ // $slug = sanitize_title_with_dashes( $custom_prefix );
976
+ // }
977
+ $prefix = preg_replace( '!^/!', '', trailingslashit( $slug ));//"{$item_id}-";
978
+
979
+ if ( '' != get_option( 'permalink_structure' ) && get_post_status( $this->id ) != 'draft' ) {
980
+ $permalink .= $prefix . $post_name;
981
+ } else {
982
+ $key = preg_replace( '!lp_!', '', get_post_type( $item_id ) );
983
+ $permalink = add_query_arg( array( $key => $post_name ), $permalink );
984
+ }
985
+ break;
986
+ }
987
+ $permalink = trailingslashit( $permalink );
988
+ $item_links[$key] = $permalink;
989
+ }
990
+ return apply_filters( 'learn_press_course_item_link', $item_links[$key], $item_id, $this );
991
+ }
992
+
993
+ public function get_next_item( $args = null ) {
994
+ $args = wp_parse_args( $args, array(
995
+ 'current_item' => false,
996
+ 'dir' => 'next',
997
+ 'viewable' => null
998
+ ) );
999
+ $items_types = apply_filters( 'learn_press_course_' . $args['dir'] . '_item_types', false, $this->id );
1000
+ if ( $items_types === false ) {
1001
+ $items = (array) $this->get_curriculum_items( array( 'field' => 'ID' ) );
1002
+ } else {
1003
+ $items = (array) $this->get_curriculum_items( array( 'field' => 'ID', 'group' => true ) );
1004
+ if ( !empty( $items[$items_types] ) ) {
1005
+ $items = array_values( $items[$items_types] );
1006
+ } else {
1007
+ $items = array();
1008
+ }
1009
+ }
1010
+ $items_len = sizeof( $items );
1011
+ if ( $items_len < 2 ) return false;
1012
+ $current_item = $args['current_item'] ? $args['current_item'] : ( $this->current_item ? $this->current_item->id : 0 );
1013
+ if ( !$current_item ) {
1014
+ $current_item = reset( $items );
1015
+ }
1016
+ $next_item = false;
1017
+ if ( ( $pos = array_search( $current_item, $items ) ) !== false ) {
1018
+ if ( $args['dir'] == 'next' ) {
1019
+ if ( $pos == sizeof( $items ) - 1 ) {
1020
+ $next_item = false;
1021
+ } else {
1022
+ if ( $args['viewable'] !== null ) {
1023
+ $user = learn_press_get_current_user();
1024
+ for ( $i = $pos + 1; $i < $items_len; $i ++ ) {
1025
+ if ( !!$user->can( 'view-item', $items[$i] ) === $args['viewable'] ) {
1026
+ $next_item = $items[$i];
1027
+ break;
1028
+ }
1029
+ }
1030
+ } else {
1031
+ $next_item = $items[$pos + 1];
1032
+ }
1033
+ }
1034
+ } else {
1035
+ if ( $pos == 0 ) {
1036
+ $next_item = false;
1037
+ } else {
1038
+ if ( $args['viewable'] !== null ) {
1039
+ $user = learn_press_get_current_user();
1040
+ for ( $i = $pos - 1; $i >= 0; $i -- ) {
1041
+ if ( !!$user->can( 'view-item', $items[$i] ) === $args['viewable'] ) {
1042
+ $next_item = $items[$i];
1043
+ break;
1044
+ }
1045
+ }
1046
+ } else {
1047
+ $next_item = $items[$pos - 1];
1048
+ }
1049
+ }
1050
+ }
1051
+ } else {
1052
+ $next_item = $args['dir'] == 'next' ? $items[1] : $items[$items_len - 1];
1053
+ }
1054
+ return apply_filters( 'learn_press_course_' . $args['dir'] . '_item', $next_item, $current_item, $this );
1055
+ }
1056
+
1057
+ public function get_next_item_html( $args = null ) {
1058
+ $args = wp_parse_args(
1059
+ $args,
1060
+ array(
1061
+ 'current_item' => false,
1062
+ 'viewable' => null,
1063
+ 'dir' => 'next'
1064
+ )
1065
+ );
1066
+ if ( $next_item = $this->get_next_item( $args ) ) {
1067
+ ob_start();
1068
+ learn_press_get_template( 'content-lesson/next-button.php', array( 'item' => $next_item, 'course' => $this ) );
1069
+ return ob_get_clean();
1070
+ }
1071
+ return false;
1072
+ }
1073
+
1074
+ public function get_prev_item_html( $args = null ) {
1075
+ $args = wp_parse_args(
1076
+ $args,
1077
+ array(
1078
+ 'current_item' => false,
1079
+ 'viewable' => null,
1080
+ 'dir' => 'prev'
1081
+ )
1082
+ );
1083
+ if ( $next_item = $this->get_next_item( $args ) ) {
1084
+ ob_start();
1085
+ learn_press_get_template( 'content-lesson/prev-button.php', array( 'item' => $next_item, 'course' => $this ) );
1086
+ return ob_get_clean();
1087
+ }
1088
+ return false;
1089
+ }
1090
+
1091
+ /**
1092
+ * @param int $user_id
1093
+ * @param bool $force
1094
+ *
1095
+ * @return mixed|null|void
1096
+ */
1097
+ public function get_course_result_html( $user_id = 0, $force = false ) {
1098
+ if ( !$user_id ) {
1099
+ $user_id = get_current_user_id();
1100
+ }
1101
+ $html = '';
1102
+ $quizzes = $this->get_quizzes();
1103
+ if ( ( $this->course_result == 'evaluate_lesson' ) || !$quizzes ) {
1104
+
1105
+ $lessons = $this->get_lessons();
1106
+ $total_items = sizeof( $quizzes ) + sizeof( $lessons );
1107
+
1108
+
1109
+ $html = sprintf( __( '%d of %d items completed', 'learnpress' ), $this->count_completed_items( $user_id, $force ), $total_items );
1110
+ } else {
1111
+ if ( $this->course_result == 'evaluate_final_quiz' ) {
1112
+ $html = sprintf( __( '%d%% completed', 'learnpress' ), $this->_evaluate_course_by_quiz( $user_id, $force ) * 100 );
1113
+ } else {
1114
+ $html = sprintf( __( '%d%% completed', 'learnpress' ), $this->_evaluate_course_by_quizzes( $user_id, $force ) * 100 );
1115
+ }
1116
+ }
1117
+ return apply_filters( 'learn_press_course_result_html', $html, $this->id, $user_id );
1118
+ }
1119
+
1120
+ protected function _evaluate_course_by_items( $user_id = 0, $force = false ) {
1121
+ $items = $this->get_curriculum_items();
1122
+ $result = 0;
1123
+ if ( $items ) {
1124
+ $completed_items = $this->count_completed_items( $user_id, $force );
1125
+ $result = round( $completed_items / sizeof( $items ) * 100 );
1126
+ }
1127
+ return apply_filters( 'learn_press_course_results_by_items', $result, $this->id, $user_id );
1128
+ }
1129
+
1130
+ /**
1131
+ * Calculate course results for user by course results settings
1132
+ *
1133
+ * @param int $user_id
1134
+ * @param boolean $force
1135
+ *
1136
+ * @return mixed|null|void
1137
+ */
1138
+ public function evaluate_course_results( $user_id = 0, $force = false ) {
1139
+ if ( !$user_id ) {
1140
+ $user_id = get_current_user_id();
1141
+ }
1142
+
1143
+ $quizzes = $this->get_quizzes();
1144
+
1145
+ if ( ( $this->course_result == 'evaluate_lesson' ) || !$quizzes ) {
1146
+ $results = $this->_evaluate_course_by_items( $user_id, $force );//$this->_evaluate_course_by_lesson( $user_id, $force );
1147
+ } else {
1148
+ if ( $this->course_result == 'evaluate_final_quiz' ) {
1149
+ $results = $this->_evaluate_course_by_quiz( $user_id, $force );
1150
+ } else {
1151
+ $results = $this->_evaluate_course_by_quizzes( $user_id, $force );
1152
+ }
1153
+ }
1154
+ return apply_filters( 'learn_press_evaluation_course_results', $results );
1155
+ }
1156
+
1157
+ public function is_evaluation( $thing ) {
1158
+ return $this->course_result == $thing;
1159
+ }
1160
+
1161
+ /**
1162
+ * Get number of lessons user has completed
1163
+ *
1164
+ * @param $user_id
1165
+ * @param bool $force
1166
+ *
1167
+ * @return int|mixed|null|void
1168
+ */
1169
+ public function get_completed_lessons( $user_id, $force = false ) {
1170
+ //static $completed_lessons = array();
1171
+ $key = $user_id . '-' . $this->id;
1172
+
1173
+ $completed_lessons = LP_Cache::get_completed_lessons( false, array() );
1174
+
1175
+ if ( !array_key_exists( $key, $completed_lessons ) || $force ) {
1176
+ global $wpdb;
1177
+ $course_lessons = $this->get_lessons( array( 'field' => 'ID' ) );
1178
+ if ( !$course_lessons ) {
1179
+ return 0;
1180
+ }
1181
+ $query = $wpdb->prepare( "
1182
+ SELECT count(ul.item_id)
1183
+ FROM {$wpdb->prefix}learnpress_user_items ul
1184
+ INNER JOIN {$wpdb->posts} l ON l.ID = ul.item_id
1185
+ WHERE ul.user_id = %d
1186
+ AND status = %s
1187
+ AND ul.ref_id = %d
1188
+ AND ul.item_id IN(" . join( ",", $course_lessons ) . ")
1189
+ ", $user_id, 'completed', $this->id );
1190
+
1191
+ $completed_lessons[$key] = $wpdb->get_var( $query );
1192
+
1193
+ LP_Cache::set_completed_lessons( $key, $completed_lessons[$key] );
1194
+ }
1195
+
1196
+ return apply_filters( 'learn_press_user_completed_lessons', $completed_lessons[$key], $this->id, $user_id );
1197
+ }
1198
+
1199
+ /**
1200
+ * Calculate results of course by lesson user completed
1201
+ *
1202
+ * @param int $user_id
1203
+ * @param boolean $force
1204
+ *
1205
+ * @return int|mixed|null|void
1206
+ */
1207
+ public function _evaluate_course_by_lesson( $user_id, $force = false ) {
1208
+ //static $evaluate_course_by_lesson = array();
1209
+ $evaluate_course_by_lesson = LP_Cache::get_evaluate_course_by_lesson( false, array() );
1210
+ $key = $user_id . '-' . $this->id;
1211
+ if ( !array_key_exists( $key, $evaluate_course_by_lesson ) || $force ) {
1212
+ $course_lessons = $this->get_lessons( array( 'field' => 'ID' ) );
1213
+ $completed_lessons = $this->get_completed_lessons( $user_id );
1214
+ $evaluate_course_by_lesson[$key] = min( $completed_lessons / sizeof( $course_lessons ), 1 );
1215
+ LP_Cache::set_evaluate_course_by_lesson( $key, $evaluate_course_by_lesson[$key] );
1216
+ }
1217
+ return apply_filters( 'learn_press_evaluation_course_lesson', $evaluate_course_by_lesson[$key], $this->id, $user_id );
1218
+ }
1219
+
1220
+ /**
1221
+ * Get number of lessons user has completed
1222
+ *
1223
+ * @param $user_id
1224
+ * @param array $items
1225
+ * @param bool $force
1226
+ *
1227
+ * @return int|mixed|null|void
1228
+ */
1229
+ public function get_completed_items( $user_id = 0, $items = array(), $force = false ) {
1230
+ if ( !$user_id ) {
1231
+ $user_id = get_current_user_id();
1232
+ }
1233
+ //$completed_items = LP_Cache::get_completed_items( false, array() );
1234
+ $key = $user_id . '-' . $this->id;
1235
+
1236
+ $item_statuses = LP_Cache::get_item_statuses( false, array() );
1237
+ $completed_items = array();
1238
+ if ( $item_statuses ) {
1239
+ if ( $curriculum_items = $this->post->curriculum_items ) {
1240
+ $curriculum_items = maybe_unserialize( $curriculum_items );
1241
+ foreach ( $curriculum_items as $item_id ) {
1242
+ $k = sprintf( '%d-%d-%d', $user_id, $this->id, $item_id );
1243
+ if ( !empty( $item_statuses[$k] ) && $item_statuses[$k] == 'completed' ) {
1244
+ $completed_items[] = $item_id;
1245
+ }
1246
+ }
1247
+ }
1248
+ }
1249
+ return apply_filters( 'learn_press_user_completed_items', $completed_items, $this->id, $user_id );
1250
+ if ( !array_key_exists( $key, $completed_items ) || $force ) {
1251
+ global $wpdb;
1252
+ $course_items = $this->get_curriculum_items( array( 'field' => 'ID' ) );
1253
+ if ( !$course_items ) {
1254
+ return 0;
1255
+ }
1256
+ if ( $items ) {
1257
+ $in_item_types = array_fill( 0, sizeof( $items ), '%s' );
1258
+ $item_types = $wpdb->prepare( " AND item_type IN(" . join( ',', $in_item_types ) . ") ", $items );
1259
+ } else {
1260
+ $item_types = '';
1261
+ }
1262
+ $query = $wpdb->prepare( "
1263
+ SELECT user_item_id, user_id, status, ref_id, item_id, item_type
1264
+ FROM (SELECT * FROM {$wpdb->prefix}learnpress_user_items ORDER BY item_id, user_item_id DESC) x
1265
+ GROUP BY item_id
1266
+ HAVING user_id = %d
1267
+ AND status = %s
1268
+ AND ref_id = %d
1269
+ AND item_id IN(" . join( ",", $course_items ) . ")
1270
+ " . $item_types . "
1271
+ ", $user_id, 'completed', $this->id );
1272
+ $user_item_ids = $wpdb->get_col( $query );
1273
+ $completed_items[$key] = $user_item_ids;
1274
+ LP_Cache::set_completed_items( $completed_items );
1275
+ }
1276
+ return apply_filters( 'learn_press_user_completed_items', $completed_items[$key], $this->id, $user_id );
1277
+ }
1278
+
1279
+ /**
1280
+ * @param int $user_id
1281
+ * @param bool $force
1282
+ *
1283
+ * @return mixed|void
1284
+ */
1285
+ public function count_completed_items( $user_id = 0, $force = false ) {
1286
+ $items = $this->get_completed_items( $user_id, $force );
1287
+ $count = 0;
1288
+ if ( $items ) {
1289
+ $count = sizeof( $items );
1290
+ }
1291
+ return apply_filters( 'learn_press_count_user_completed_items', $count, $this->id, $user_id );
1292
+ }
1293
+
1294
+ /**
1295
+ * Calculate results of course by final quiz
1296
+ *
1297
+ * @param int $user_id
1298
+ * @param boolean $force
1299
+ *
1300
+ * @return mixed|null|void
1301
+ */
1302
+ public function _evaluate_course_by_quiz( $user_id, $force = false ) {
1303
+ global $wpdb;
1304
+ $result = $this->evaluate_quiz( $this->final_quiz, $user_id );
1305
+ return apply_filters( 'learn_press_evaluation_course_quiz', $result, $this->id, $user_id );
1306
+ }
1307
+
1308
+ public function evaluate_quiz( $quiz_id, $user_id, $force = false ) {
1309
+ $user = learn_press_get_user( $user_id );
1310
+ $quiz = LP_Quiz::get_quiz( $quiz_id );
1311
+ $results = $user->get_quiz_results( $quiz_id, $this->id );
1312
+ if ( !$results ) {
1313
+ $result = 0;
1314
+ } else {
1315
+ if ( $user->get_quiz_graduation( $quiz_id, $this->id ) == 'passed' && !empty( $results->mark_percent ) ) {
1316
+ $result = absint( $results->mark_percent );
1317
+ } else {
1318
+ $result = 0;
1319
+ }
1320
+ }
1321
+ return $result;
1322
+ }
1323
+
1324
+
1325
+ /**
1326
+ * Calculate results of course by avg of all quizzes
1327
+ *
1328
+ * @param int $user_id
1329
+ * @param boolean $force
1330
+ *
1331
+ * @return mixed
1332
+ */
1333
+ public function _evaluate_course_by_quizzes( $user_id, $force = false ) {
1334
+ $quizzes = $this->get_quizzes();
1335
+ $result = 0;
1336
+ if ( $quizzes ) {
1337
+ foreach ( $quizzes as $quiz ) {
1338
+ $result += $this->evaluate_quiz( $quiz->ID, $user_id, $force );
1339
+ }
1340
+ $result = round( $result / sizeof( $quizzes ) );
1341
+ }
1342
+ return apply_filters( 'learn_press_evaluation_course_quizzes', $result, $this->id, $user_id );
1343
+ }
1344
+
1345
+ /**
1346
+ * Get content of course item
1347
+ *
1348
+ * @param $item_id
1349
+ *
1350
+ * @return string
1351
+ */
1352
+ public function get_item_content( $item_id ) {
1353
+ global $post;
1354
+ $post = get_post( $item_id );
1355
+
1356
+ // setup global post to apply all filters hook to content
1357
+ setup_postdata( $post );
1358
+
1359
+ // do shortcode
1360
+ $content = do_shortcode( get_the_content() );
1361
+
1362
+ // restore post content
1363
+ wp_reset_postdata();
1364
+ return $content;
1365
+ }
1366
+
1367
+ /**
1368
+ * Get course duration in seconds
1369
+ *
1370
+ * @return int
1371
+ */
1372
+ public function get_duration() {
1373
+ /**
1374
+ * Duration is in string such as 10 week, 4 hour, etc...
1375
+ * So we can use strtotime('+10 week') to convert it to seconds
1376
+ */
1377
+ return strtotime( "+" . $this->duration, 0 );
1378
+ }
1379
+
1380
+
1381
+ /**
1382
+ * Get course remaining time message
1383
+ *
1384
+ * @param $user_id
1385
+ *
1386
+ * @return string
1387
+ */
1388
+ public function get_user_duration_html( $user_id = 0 ) {
1389
+ if ( !$user_id ) {
1390
+ $user_id = get_current_user_id();
1391
+ }
1392
+ $duration = $this->get_duration();
1393
+ $user = learn_press_get_user( $user_id );
1394
+ $course_info = $user->get_course_info( $this->id );
1395
+ $html = '';
1396
+ if ( $course_info ) {
1397
+ $now = current_time( 'timestamp' );
1398
+ $start_time = intval( strtotime( $course_info['start'] ) );
1399
+ if ( $start_time + $duration > $now ) {
1400
+ $remain = $start_time + $duration - $now;
1401
+ $remain = learn_press_seconds_to_weeks( $remain );
1402
+ $html = sprintf( __( 'This course will end within %s next', 'learnpress' ), $remain );
1403
+ }
1404
+ }
1405
+ return $html;
1406
+ }
1407
+
1408
+ /**
1409
+ * Get expired time of this course if user has enrolled
1410
+ *
1411
+ * @param int $user_id
1412
+ *
1413
+ * @return mixed|null|void
1414
+ */
1415
+ public function get_user_expired_time( $user_id = 0 ) {
1416
+ if ( !$user_id ) {
1417
+ $user_id = get_current_user_id();
1418
+ }
1419
+ $duration = $this->get_duration();
1420
+ $user = learn_press_get_user( $user_id );
1421
+ $course_info = $user->get_course_info( $this->id );
1422
+ $start_time = intval( strtotime( $course_info['start'] ) );
1423
+ if ( $duration == 0 ) {
1424
+ $duration = DAY_IN_SECONDS * 365 * 100;
1425
+ }
1426
+ $expired = $start_time + $duration;
1427
+ return apply_filters( 'learn_press_user_course_expired_time', $expired, $user_id, $this->id );
1428
+ }
1429
+
1430
+ /**
1431
+ * Checks if this course has expired
1432
+ *
1433
+ * @param int $user_id
1434
+ *
1435
+ * @return mixed|null|void
1436
+ */
1437
+ public function is_expired( $user_id = 0 ) {
1438
+ if ( !$user_id ) {
1439
+ $user_id = get_current_user_id();
1440
+ }
1441
+ //echo "[".$this->get_user_expired_time( $user_id ), ',',current_time( 'timestamp' ),']';
1442
+ return apply_filters( 'learn_press_user_course_expired', $this->get_user_expired_time( $user_id ) - current_time( 'timestamp' ) );
1443
+ }
1444
+
1445
+ /**
1446
+ * Output params for single course page
1447
+ *
1448
+ * @param null $args
1449
+ *
1450
+ * @return mixed
1451
+ */
1452
+ public function output_args( $args = null ) {
1453
+
1454
+ $args = wp_parse_args( $args, array( 'echo' => true, 'user_id' => get_current_user_id() ) );
1455
+
1456
+ $user = learn_press_get_user( $args['user_id'] );
1457
+
1458
+ $output = array(
1459
+ 'id' => $this->id,
1460
+ 'url' => $this->get_permalink(),
1461
+ 'results' => $user->get_course_info( $this->id ),// $this->get_course_info( $args['user_id'] ),
1462
+ 'current_item' => $this->is_viewing_item(),
1463
+ 'items' => $this->get_items_params()
1464
+ );
1465
+
1466
+ $output = apply_filters( 'learn_press_single_course_params', $output, $this->id );
1467
+ LP_Assets::add_var( 'LP_Course_Params', wp_json_encode( $output ), 'learn-press-single-course' );
1468
+
1469
+ return $output;
1470
+ }
1471
+
1472
+ /**
1473
+ * Get items params for single course params
1474
+ */
1475
+ public function get_items_params( $user_id = null ) {
1476
+ global $wpdb;
1477
+ $user = learn_press_get_current_user( $user_id );
1478
+ $items = $this->get_curriculum_items(
1479
+ array(
1480
+ 'field' => array( 'item_id', 'item_type', 'post_title', 'section_id' ),
1481
+ 'field_map' => array( 'id', 'type', 'title' ),
1482
+ 'field_format' => array( '%d', '%s', '%s', '%d' )
1483
+ )
1484
+ );
1485
+ if ( $items ) foreach ( $items as $k => $item ) {
1486
+ if ( ( $view = $user->can( 'view-item', $item['id'] ) ) !== false ) {
1487
+ $items[$k]['url'] = $this->get_item_link( $item['id'] );
1488
+ $items[$k]['status'] = $user->get_item_status( $item['id'], $this->id );
1489
+ if ( $view == 'preview' ) {
1490
+
1491
+ }
1492
+ } else {
1493
+ $items[$k]['url'] = '';
1494
+ $items[$k]['status'] = '';
1495
+ }
1496
+ }
1497
+
1498
+ return $items;
1499
+ }
1500
+
1501
+
1502
+ public function get_video_embed() {
1503
+ $video_id = $this->video_id;
1504
+ $video_type = $this->video_type;
1505
+
1506
+ if ( !$video_id || !$video_type ) {
1507
+ return false;
1508
+ }
1509
+
1510
+ $embed = '';
1511
+ $height = $this->video_embed_height;
1512
+ $width = $this->video_embed_width;
1513
+
1514
+ if ( 'youtube' === $video_type ) {
1515
+ $embed = '<iframe width="' . $width . '" height="' . $height . '" '
1516
+ . 'src="https://www.youtube.com/embed/' . $video_id . '" '
1517
+ . 'frameborder="0" allowfullscreen></iframe>';
1518
+
1519
+ } elseif ( 'vimeo' === $video_type ) {
1520
+ $embed = '<iframe width="' . $width . '" height="' . $height . '" '
1521
+ . ' src="https://player.vimeo.com/video/' . $video_id . '" '
1522
+ . 'frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
1523
+ }
1524
+
1525
+ return $embed;
1526
+ }
1527
+
1528
  }
inc/course/lp-course-functions.php CHANGED
@@ -587,30 +587,17 @@ if ( !function_exists( 'learn_press_get_sample_link_course_item_url' ) ) {
587
  return;
588
  }
589
 
590
- $permalink = get_the_permalink( $item_id );
591
- $course_page_id = get_option( 'learn_press_courses_page_id' );
592
-
593
- if ( !empty($course_page_id) && get_post( $course_page_id ) != false ) {
594
-
595
- $post_types = get_post_types( null, 'objects' );
596
- $item_type = get_post_type( $item_id );
597
- $permalink = trailingslashit( get_the_permalink( $course_page_id ) );
598
- $course_slug = basename( $permalink );
599
- $permalink = str_replace( $course_slug, 'course/sample-course', $permalink );
600
- $post_name = get_post_field( 'post_name', $item_id );
601
- $prefix = preg_replace( '!^/!', '', trailingslashit( $post_types[$item_type]->rewrite['slug'] ) );
602
-
603
- if ( '' != get_option( 'permalink_structure' ) && get_post_status( $course_page_id ) != 'draft' ) {
604
 
605
- // $permalink .= $prefix . $post_name;
606
- $permalink = $post_name;
607
-
608
- }
609
- else {
610
- $key = preg_replace( '!lp_!', '', get_post_type( $item_id ) );
611
- $permalink = add_query_arg( array( $key => $post_name ), $permalink );
612
- }
613
- }
 
614
  return $permalink;
615
 
616
  }
587
  return;
588
  }
589
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
590
 
591
+ $permalink = get_the_permalink( $item_id );
592
+ $post_name = get_post_field( 'post_name', $item_id );
593
+
594
+ if ( '' != get_option( 'permalink_structure' ) ) {
595
+ $permalink = $post_name;
596
+ }
597
+ else {
598
+ $key = preg_replace( '!lp_!', '', get_post_type( $item_id ) );
599
+ $permalink = add_query_arg( array( $key => $post_name ), $permalink );
600
+ }
601
  return $permalink;
602
 
603
  }
inc/custom-post-types/abstract.php CHANGED
@@ -247,6 +247,9 @@ abstract class LP_Abstract_Post_Type {
247
  }
248
 
249
  public function add_meta_boxes() {
 
 
 
250
  do_action( 'learn_press_add_meta_boxes', $this->_post_type, $this );
251
  do_action( "learn_press_{$this->_post_type}_add_meta_boxes", $this );
252
  if ( !$this->_meta_boxes ) {
@@ -434,8 +437,8 @@ abstract class LP_Abstract_Post_Type {
434
  $view_link = sprintf( ' <a href="%s">%s</a>', esc_url( $permalink ), sprintf( '%s %s', __( 'View', 'learnpress' ), $post_type_object->labels->singular_name ) );
435
  switch ( $this->_post_type ) {
436
  case LP_LESSON_CPT:
437
- case LP_QUIZ_CPT:
438
- $view_link = learn_press_get_item_course_id( $post->ID, $post->post_type ) ? $view_link : '';
439
  break;
440
  case LP_ORDER_CPT:
441
  $order = learn_press_get_order( $post->ID );
247
  }
248
 
249
  public function add_meta_boxes() {
250
+ if ( $this->_post_type != learn_press_get_requested_post_type() ) {
251
+ return;
252
+ }
253
  do_action( 'learn_press_add_meta_boxes', $this->_post_type, $this );
254
  do_action( "learn_press_{$this->_post_type}_add_meta_boxes", $this );
255
  if ( !$this->_meta_boxes ) {
437
  $view_link = sprintf( ' <a href="%s">%s</a>', esc_url( $permalink ), sprintf( '%s %s', __( 'View', 'learnpress' ), $post_type_object->labels->singular_name ) );
438
  switch ( $this->_post_type ) {
439
  case LP_LESSON_CPT:
440
+ case LP_QUIZ_CPT:
441
+ $view_link = learn_press_get_item_course_id( $post->ID, $post->post_type ) ? $view_link : '';
442
  break;
443
  case LP_ORDER_CPT:
444
  $order = learn_press_get_order( $post->ID );
inc/custom-post-types/course.php CHANGED
@@ -139,32 +139,32 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
139
 
140
  if ( learn_press_get_user_option( 'course-tabs' ) == 'yes' ) {
141
  ?>
142
- <ul id="course-tabs">
143
- <li id="switch-course-metaboxes">
144
- <!--<a href="" id="reorder-course-tabs"><?php _e( 'Reorder', 'learnpress' ); ?></a>
145
  <a href="" id="complete-reorder-course-tabs"><?php _e( 'Ok', 'learnpress' ); ?></a>-->
146
- <a href="<?php echo add_query_arg( 'switch-course-tabs', 'off', get_edit_post_link() ); ?>"><?php _e( 'Switch to meta boxes', 'learnpress' ); ?></a>
147
- </li>
148
- </ul>
149
- <input type="hidden" id="course-tab" name="course-tab" value="<?php echo !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : ''; ?>" />
150
 
151
  <?php
152
  } else {
153
  if ( learn_press_get_user_option( 'hide-notice-switch-course-tabs' ) != 'yes' ) {
154
  ?>
155
- <div class="message updated learn-press-message">
156
- <p><?php _e( 'Would you like to see the meta boxes in tabs style?', 'learnpress' ); ?></p>
157
- <p>
158
- <a class="button" href="<?php echo add_query_arg( 'switch-course-tabs', 'on', get_edit_post_link() ); ?>"><?php _e( 'Switch meta boxes to tabs', 'learnpress' ); ?></a>
159
- <a class="button" href="<?php echo add_query_arg( 'lp-hide-notice', 'switch-course-tabs', get_edit_post_link() ); ?>"><?php _e( 'Hide', 'learnpress' ); ?></a>
160
- </p>
161
  <?php printf( '<a href="%s" class="learn-press-admin-notice-dismiss"></a>', add_query_arg( 'lp-hide-notice', 'switch-course-tabs', get_edit_post_link() ) ); ?>
162
- </div>
163
  <?php
164
  }
165
  ?>
166
- <a id="toggle-meta-boxes" href=""><?php _e( 'Toggle', 'learnpress' ); ?></a>
167
- <a id="switch-course-tabs" href="<?php echo add_query_arg( 'switch-course-tabs', 'on', get_edit_post_link() ); ?>"><?php _e( 'Switch to tabs', 'learnpress' ); ?></a>
168
  <?php
169
  }
170
  }
@@ -259,17 +259,43 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
259
 
260
  public function update_course( $course_id ) {
261
  global $wpdb;
262
- $course_origin_author = get_post_field( 'post_author', $course_id );
263
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  if ( !empty( $_POST['_lp_course_author'] ) ) {
265
- $wpdb->update(
266
- $wpdb->posts,
267
- array( 'post_author' => $_POST['_lp_course_author'] ),
268
- array( 'ID' => $course_id )
269
- );
270
- } elseif ( !( $course_author = get_post_meta( $course_id, '_lp_course_author', true ) ) || !get_user_by( 'id', $course_author ) ) {
271
- update_post_meta( $course_id, '_lp_course_author', $course_author );
272
- $_POST['_lp_course_author'] = $_REQUEST['_lp_course_author'] = $course_origin_author;
273
  }
274
  }
275
 
@@ -327,7 +353,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
327
  if ( empty( $post_id ) ) {
328
  return;
329
  }
330
- if ( self::$_enable_review ) {
331
  if ( !empty( $_POST ) && learn_press_get_current_user()->is_instructor() && 'yes' == get_post_meta( $post_id, '_lp_submit_for_reviewer', true ) ) {
332
  LP_Admin_Notice::add_redirect( __( 'Sorry! You can not update a course while it is viewing!', 'learnpress' ), 'error' );
333
  wp_redirect( admin_url( 'post.php?post=' . $post_id . '&action=edit' ) );
@@ -363,9 +389,9 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
363
  public function toggle_editor_button( $post ) {
364
  if ( $post->post_type == LP_COURSE_CPT ) {
365
  ?>
366
- <button class="button button-primary"
367
- data-hidden="<?php echo get_post_meta( $post->ID, '_lp_editor_hidden', true ); ?>" type="button"
368
- id="learn-press-button-toggle-editor"><?php _e( 'Toggle Course Content', 'learnpress' ); ?></button>
369
  <?php
370
  }
371
  }
@@ -489,24 +515,14 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
489
  /**
490
  * Add meta boxes to course post type page
491
  */
492
- public
493
- function add_meta_boxes() {
494
-
495
- $user = wp_get_current_user();
496
- //print_r($user);
497
-
498
- $post_type_object = get_post_type_object( LP_COURSE_CPT );
499
- //print_r($post_type_object);
500
-
501
- if ( !self::$_VER2 ) {
502
- new RW_Meta_Box( self::curriculum_meta_box() );
503
  }
504
-
505
  new RW_Meta_Box( self::settings_meta_box() );
506
  new RW_Meta_Box( self::assessment_meta_box() );
507
-
508
  new RW_Meta_Box( self::payment_meta_box() );
509
-
510
  if ( self::$_enable_review ) {
511
  $this->review_logs_meta_box();
512
  }
@@ -522,8 +538,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
522
  *
523
  * @return mixed|null|void
524
  */
525
- public
526
- static function curriculum_meta_box() {
527
  $prefix = '_lp_';
528
 
529
  $meta_box = array(
@@ -678,20 +693,20 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
678
 
679
  if ( current_user_can( 'manage_options' ) ) {
680
  // $message = __( 'If free, this field is empty or set 0. (Only admin can edit this field)', 'learnpress' );
681
- $message = '';
682
- $price = get_post_meta( $course_id, '_lp_price', true );
683
  $sale_price = 0;
684
  $start_date = '';
685
  $end_date = '';
686
 
687
  if ( isset( $_GET['post'] ) ) {
688
- $course_id = $_GET['post'];
689
 
690
  if ( $payment != 'free' ) {
691
- $suggest_price = get_post_meta( $course_id, '_lp_suggestion_price', true );
692
- $course = get_post( $course_id );
693
 
694
- $author = get_userdata( $course->post_author ) ;
695
 
696
  if ( isset( $suggest_price ) && $author->roles[0] === 'lp_teacher' ) {
697
  $message = sprintf( __( 'This course is requires enrollment and the suggested price is <strong>%s</strong>', 'learnpress' ), learn_press_format_price( $suggest_price, true ) );
@@ -744,14 +759,14 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
744
  )
745
  );
746
  } else {
747
- $price = get_post_meta( $course_id, '_lp_price', true );
748
- $meta_box['fields'][] = array(
749
- 'name' => __( 'Price set by Admin', 'learnpress' ),
750
- 'id' => "{$prefix}price",
751
- 'type' => 'html',
752
- 'class' => 'lp-course-price-field' . ( $payment != 'yes' ? ' hide-if-js' : '' ),
753
- 'html' => $price !== '' ? sprintf( '<strong>%s</strong>', learn_press_format_price( $price, true ) ) : __( 'Not set', 'learnpress' )
754
- );
755
  $meta_box['fields'][] = array(
756
  'name' => __( 'Course Suggestion Price', 'learnpress' ),
757
  'id' => "{$prefix}suggestion_price",
@@ -788,6 +803,10 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
788
  public
789
  static function author_meta_box() {
790
 
 
 
 
 
791
  $prefix = '_lp_';
792
 
793
  $include = array();
@@ -811,14 +830,14 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
811
  'priority' => 'default',
812
  'fields' => array(
813
  array(
814
- 'name' => __( 'Author', 'learnpress' ),
815
- 'id' => "{$prefix}course_author",
816
- 'desc' => '',
817
- 'multiple' => false,
818
- 'allowClear' => false,
819
- 'type' => 'select_advanced',
820
- 'placeholder' => __( 'Select author', 'learnpress' ),
821
- 'options' => $include
822
  )
823
  )
824
  );
@@ -1134,9 +1153,9 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
1134
  }
1135
  } elseif ( $user->is_instructor() ) { // Course is submitted by instructor
1136
 
1137
- if ( $enable_edit_published && ( $old_status == $new_status && $new_status == 'publish' ) ) {
1138
- $submit_for_review = false;
1139
- }
1140
  if ( ( $submit_for_review || ( $old_status != $new_status ) ) && $post->post_status != 'auto-draft' ) {
1141
  $action = 'for_reviewer';
1142
  update_post_meta( $post->ID, '_lp_submit_for_reviewer', 'yes' );
@@ -1227,7 +1246,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
1227
  }
1228
 
1229
  public
1230
- function before_save_curriculum() {
1231
 
1232
  global $post, $pagenow;
1233
 
139
 
140
  if ( learn_press_get_user_option( 'course-tabs' ) == 'yes' ) {
141
  ?>
142
+ <ul id="course-tabs">
143
+ <li id="switch-course-metaboxes">
144
+ <!--<a href="" id="reorder-course-tabs"><?php _e( 'Reorder', 'learnpress' ); ?></a>
145
  <a href="" id="complete-reorder-course-tabs"><?php _e( 'Ok', 'learnpress' ); ?></a>-->
146
+ <a href="<?php echo add_query_arg( 'switch-course-tabs', 'off', get_edit_post_link() ); ?>"><?php _e( 'Switch to meta boxes', 'learnpress' ); ?></a>
147
+ </li>
148
+ </ul>
149
+ <input type="hidden" id="course-tab" name="course-tab" value="<?php echo !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : ''; ?>" />
150
 
151
  <?php
152
  } else {
153
  if ( learn_press_get_user_option( 'hide-notice-switch-course-tabs' ) != 'yes' ) {
154
  ?>
155
+ <div class="message updated learn-press-message">
156
+ <p><?php _e( 'Would you like to see the meta boxes in tabs style?', 'learnpress' ); ?></p>
157
+ <p>
158
+ <a class="button" href="<?php echo add_query_arg( 'switch-course-tabs', 'on', get_edit_post_link() ); ?>"><?php _e( 'Switch meta boxes to tabs', 'learnpress' ); ?></a>
159
+ <a class="button" href="<?php echo add_query_arg( 'lp-hide-notice', 'switch-course-tabs', get_edit_post_link() ); ?>"><?php _e( 'Hide', 'learnpress' ); ?></a>
160
+ </p>
161
  <?php printf( '<a href="%s" class="learn-press-admin-notice-dismiss"></a>', add_query_arg( 'lp-hide-notice', 'switch-course-tabs', get_edit_post_link() ) ); ?>
162
+ </div>
163
  <?php
164
  }
165
  ?>
166
+ <a id="toggle-meta-boxes" href=""><?php _e( 'Toggle', 'learnpress' ); ?></a>
167
+ <a id="switch-course-tabs" href="<?php echo add_query_arg( 'switch-course-tabs', 'on', get_edit_post_link() ); ?>"><?php _e( 'Switch to tabs', 'learnpress' ); ?></a>
168
  <?php
169
  }
170
  }
259
 
260
  public function update_course( $course_id ) {
261
  global $wpdb;
 
262
 
263
+ $course = LP_Course::get_course( $course_id );
264
+ $curriculum = $course->get_curriculum_items();
265
+ // course curriculum items / quiz items / questions of quiz
266
+ $item_ids = $quiz_ids = $question_ids = array();
267
+
268
+ // get curriculum item
269
+ foreach ( $curriculum as $item ) {
270
+ $item_ids[] = (int) $item->ID;
271
+
272
+ // filter quiz item
273
+ if ( get_post_type( $item->ID ) == LP_QUIZ_CPT ) {
274
+ $quiz_ids[] = $item->ID;
275
+ }
276
+ }
277
+
278
+ // get question items
279
+ foreach ( $quiz_ids as $quiz_id ) {
280
+ $quiz = LP_Quiz::get_quiz( $quiz_id );
281
+ $questions = $quiz->get_questions();
282
+ foreach ( $questions as $question ) {
283
+ $question_ids[] = $question->ID;
284
+ }
285
+ }
286
+
287
+ // merge all post type on course
288
+ $ids = array_merge( (array) $course_id, $item_ids, $question_ids );
289
+
290
+ // update post author
291
  if ( !empty( $_POST['_lp_course_author'] ) ) {
292
+ foreach ( $ids as $id ) {
293
+ $wpdb->update(
294
+ $wpdb->posts,
295
+ array( 'post_author' => $_POST['_lp_course_author'] ),
296
+ array( 'ID' => $id )
297
+ );
298
+ }
 
299
  }
300
  }
301
 
353
  if ( empty( $post_id ) ) {
354
  return;
355
  }
356
+ if ( self::$_enable_review ) {
357
  if ( !empty( $_POST ) && learn_press_get_current_user()->is_instructor() && 'yes' == get_post_meta( $post_id, '_lp_submit_for_reviewer', true ) ) {
358
  LP_Admin_Notice::add_redirect( __( 'Sorry! You can not update a course while it is viewing!', 'learnpress' ), 'error' );
359
  wp_redirect( admin_url( 'post.php?post=' . $post_id . '&action=edit' ) );
389
  public function toggle_editor_button( $post ) {
390
  if ( $post->post_type == LP_COURSE_CPT ) {
391
  ?>
392
+ <button class="button button-primary"
393
+ data-hidden="<?php echo get_post_meta( $post->ID, '_lp_editor_hidden', true ); ?>" type="button"
394
+ id="learn-press-button-toggle-editor"><?php _e( 'Toggle Course Content', 'learnpress' ); ?></button>
395
  <?php
396
  }
397
  }
515
  /**
516
  * Add meta boxes to course post type page
517
  */
518
+ public function add_meta_boxes() {
519
+ if ( LP_COURSE_CPT != learn_press_get_requested_post_type() ) {
520
+ return;
 
 
 
 
 
 
 
 
521
  }
522
+ new RW_Meta_Box( self::curriculum_meta_box() );
523
  new RW_Meta_Box( self::settings_meta_box() );
524
  new RW_Meta_Box( self::assessment_meta_box() );
 
525
  new RW_Meta_Box( self::payment_meta_box() );
 
526
  if ( self::$_enable_review ) {
527
  $this->review_logs_meta_box();
528
  }
538
  *
539
  * @return mixed|null|void
540
  */
541
+ public static function curriculum_meta_box() {
 
542
  $prefix = '_lp_';
543
 
544
  $meta_box = array(
693
 
694
  if ( current_user_can( 'manage_options' ) ) {
695
  // $message = __( 'If free, this field is empty or set 0. (Only admin can edit this field)', 'learnpress' );
696
+ $message = '';
697
+ $price = get_post_meta( $course_id, '_lp_price', true );
698
  $sale_price = 0;
699
  $start_date = '';
700
  $end_date = '';
701
 
702
  if ( isset( $_GET['post'] ) ) {
703
+ $course_id = $_GET['post'];
704
 
705
  if ( $payment != 'free' ) {
706
+ $suggest_price = get_post_meta( $course_id, '_lp_suggestion_price', true );
707
+ $course = get_post( $course_id );
708
 
709
+ $author = get_userdata( $course->post_author );
710
 
711
  if ( isset( $suggest_price ) && $author->roles[0] === 'lp_teacher' ) {
712
  $message = sprintf( __( 'This course is requires enrollment and the suggested price is <strong>%s</strong>', 'learnpress' ), learn_press_format_price( $suggest_price, true ) );
759
  )
760
  );
761
  } else {
762
+ $price = get_post_meta( $course_id, '_lp_price', true );
763
+ $meta_box['fields'][] = array(
764
+ 'name' => __( 'Price set by Admin', 'learnpress' ),
765
+ 'id' => "{$prefix}price",
766
+ 'type' => 'html',
767
+ 'class' => 'lp-course-price-field' . ( $payment != 'yes' ? ' hide-if-js' : '' ),
768
+ 'html' => $price !== '' ? sprintf( '<strong>%s</strong>', learn_press_format_price( $price, true ) ) : __( 'Not set', 'learnpress' )
769
+ );
770
  $meta_box['fields'][] = array(
771
  'name' => __( 'Course Suggestion Price', 'learnpress' ),
772
  'id' => "{$prefix}suggestion_price",
803
  public
804
  static function author_meta_box() {
805
 
806
+ $course_id = !empty( $_GET['post'] ) ? $_GET['post'] : 0;
807
+
808
+ $author = get_post( $course_id ) ? get_post( $course_id )->post_author : '';
809
+
810
  $prefix = '_lp_';
811
 
812
  $include = array();
830
  'priority' => 'default',
831
  'fields' => array(
832
  array(
833
+ 'name' => __( 'Author', 'learnpress' ),
834
+ 'id' => "{$prefix}course_author",
835
+ 'desc' => '',
836
+ 'multiple' => false,
837
+ 'allowClear' => false,
838
+ 'type' => 'select',
839
+ 'options' => $include,
840
+ 'std' => $author
841
  )
842
  )
843
  );
1153
  }
1154
  } elseif ( $user->is_instructor() ) { // Course is submitted by instructor
1155
 
1156
+ if ( $enable_edit_published && ( $old_status == $new_status && $new_status == 'publish' ) ) {
1157
+ $submit_for_review = false;
1158
+ }
1159
  if ( ( $submit_for_review || ( $old_status != $new_status ) ) && $post->post_status != 'auto-draft' ) {
1160
  $action = 'for_reviewer';
1161
  update_post_meta( $post->ID, '_lp_submit_for_reviewer', 'yes' );
1246
  }
1247
 
1248
  public
1249
+ function before_save_curriculum() {
1250
 
1251
  global $post, $pagenow;
1252
 
inc/custom-post-types/order.php CHANGED
@@ -480,65 +480,8 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
480
  * Register new post status for order
481
  */
482
  public function register_post_statues() {
483
- global $lp_order_statuses;
484
- $lp_order_statuses = array();
485
- $lp_order_statuses['lp-completed'] = array(
486
- 'label' => _x( 'Completed', 'Order status', 'learnpress' ),
487
- 'public' => false,
488
- 'exclude_from_search' => false,
489
- 'show_in_admin_all_list' => true,
490
- 'show_in_admin_status_list' => true,
491
- 'label_count' => _n_noop( 'Completed <span class="count">(%s)</span>', 'Completed <span class="count">(%s)</span>', 'learnpress' )
492
- );
493
- $lp_order_statuses['lp-processing'] = array(
494
- 'label' => _x( 'Processing', 'Order status', 'learnpress' ),
495
- 'public' => false,
496
- 'exclude_from_search' => false,
497
- 'show_in_admin_all_list' => true,
498
- 'show_in_admin_status_list' => true,
499
- 'label_count' => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'learnpress' )
500
- );
501
- $lp_order_statuses['lp-pending'] = array(
502
- 'label' => _x( 'Pending Payment', 'Order status', 'learnpress' ),
503
- 'public' => false,
504
- 'exclude_from_search' => false,
505
- 'show_in_admin_all_list' => true,
506
- 'show_in_admin_status_list' => true,
507
- 'label_count' => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'learnpress' )
508
- );
509
- $lp_order_statuses['lp-cancelled'] = array(
510
- 'label' => _x( 'Cancelled', 'Order status', 'learnpress' ),
511
- 'public' => false,
512
- 'exclude_from_search' => false,
513
- 'show_in_admin_all_list' => true,
514
- 'show_in_admin_status_list' => true,
515
- 'label_count' => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'learnpress' )
516
- );
517
- // $lp_order_statuses['lp-on-hold'] = array(
518
- // 'label' => _x( 'On Hold', 'Order status', 'learnpress' ),
519
- // 'public' => false,
520
- // 'exclude_from_search' => false,
521
- // 'show_in_admin_all_list' => true,
522
- // 'show_in_admin_status_list' => true,
523
- // 'label_count' => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'learnpress' )
524
- // );
525
- // $lp_order_statuses['lp-refunded'] = array(
526
- // 'label' => _x( 'Refunded', 'Order status', 'learnpress' ),
527
- // 'public' => false,
528
- // 'exclude_from_search' => false,
529
- // 'show_in_admin_all_list' => true,
530
- // 'show_in_admin_status_list' => true,
531
- // 'label_count' => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'learnpress' )
532
- // );
533
- // $lp_order_statuses['lp-failed'] = array(
534
- // 'label' => _x( 'Failed', 'Order status', 'learnpress' ),
535
- // 'public' => false,
536
- // 'exclude_from_search' => false,
537
- // 'show_in_admin_all_list' => true,
538
- // 'show_in_admin_status_list' => true,
539
- // 'label_count' => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'learnpress' )
540
- // );
541
- foreach ( $lp_order_statuses as $status => $args ) {
542
  register_post_status( $status, $args );
543
  }
544
  }
480
  * Register new post status for order
481
  */
482
  public function register_post_statues() {
483
+ $statuses = learn_press_get_register_order_statuses();
484
+ foreach ( $statuses as $status => $args ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
  register_post_status( $status, $args );
486
  }
487
  }
inc/emails/class-lp-email-finished-course.php CHANGED
@@ -61,12 +61,15 @@ if ( !class_exists( 'LP_Email_Finished_Course' ) ) {
61
 
62
  $format = $this->email_format == 'plain_text' ? 'plain' : 'html';
63
  $course = learn_press_get_course( $course_id );
 
 
 
64
 
65
  $this->object = $this->get_common_template_data(
66
  $format,
67
  array(
68
  'course_id' => $course_id,
69
- 'course_name' => $course->get_title(),
70
  'course_url' => get_the_permalink( $course_id ),
71
  'user_id' => $user_id,
72
  'user_name' => learn_press_get_profile_display_name( $user ),
61
 
62
  $format = $this->email_format == 'plain_text' ? 'plain' : 'html';
63
  $course = learn_press_get_course( $course_id );
64
+ remove_filter( 'the_title', 'wptexturize' );
65
+ $course_name = $course->get_title();
66
+ add_filter( 'the_title', 'wptexturize' );
67
 
68
  $this->object = $this->get_common_template_data(
69
  $format,
70
  array(
71
  'course_id' => $course_id,
72
+ 'course_name' => $course_name,
73
  'course_url' => get_the_permalink( $course_id ),
74
  'user_id' => $user_id,
75
  'user_name' => learn_press_get_profile_display_name( $user ),
inc/emails/class-lp-email.php CHANGED
@@ -260,6 +260,10 @@ class LP_Email {
260
  $this->enable = LP()->settings->get( 'emails_' . $this->id . '.enable' ) == 'yes';
261
  }
262
 
 
 
 
 
263
  public function __get( $key ) {
264
  if ( !empty( $this->{$key} ) ) {
265
  return $this->{$key};
@@ -353,7 +357,9 @@ class LP_Email {
353
  $search = array_keys( $this->variables );
354
  $replace = array_values( $this->variables );
355
  }
356
- return str_replace( apply_filters( 'learn_press_email_format_string_find', $search, $this ), apply_filters( 'learn_press_email_format_string_replace', $replace, $this ), $string );
 
 
357
  }
358
 
359
  public function get_recipient() {
@@ -375,12 +381,15 @@ class LP_Email {
375
  $email_content = preg_replace( $this->text_search, $this->text_replace, $this->get_content_text_message() );
376
  }
377
 
 
 
 
378
  if ( is_array( $this->variables ) ) {
379
  $search = array_keys( $this->variables );
380
  $replace = array_values( $this->variables );
381
- $email_content = str_replace( $search, $replace, $email_content );
382
- }
383
 
 
384
 
385
  return wordwrap( $email_content, 70 );
386
  }
260
  $this->enable = LP()->settings->get( 'emails_' . $this->id . '.enable' ) == 'yes';
261
  }
262
 
263
+ public function get_variables_support() {
264
+ return apply_filters( 'learn_press_email_variables_support', $this->support_variables, $this );
265
+ }
266
+
267
  public function __get( $key ) {
268
  if ( !empty( $this->{$key} ) ) {
269
  return $this->{$key};
357
  $search = array_keys( $this->variables );
358
  $replace = array_values( $this->variables );
359
  }
360
+ $search = apply_filters( 'learn_press_email_format_string_find', $search, $this );
361
+ $replace = apply_filters( 'learn_press_email_format_string_replace', $replace, $this );
362
+ return str_replace( $search, $replace, $string );
363
  }
364
 
365
  public function get_recipient() {
381
  $email_content = preg_replace( $this->text_search, $this->text_replace, $this->get_content_text_message() );
382
  }
383
 
384
+ /*$search = array();
385
+ $replace = array();
386
+
387
  if ( is_array( $this->variables ) ) {
388
  $search = array_keys( $this->variables );
389
  $replace = array_values( $this->variables );
390
+ }*/
 
391
 
392
+ $email_content = $this->format_string( $email_content );
393
 
394
  return wordwrap( $email_content, 70 );
395
  }
inc/libraries/meta-box/inc/field.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- if ( ! class_exists( 'RWMB_Field ' ) ) {
3
  class RWMB_Field {
4
  /**
5
  * Add actions
@@ -131,10 +131,10 @@ if ( ! class_exists( 'RWMB_Field ' ) ) {
131
  if ( 'hidden' === $field['type'] ) {
132
  $classes[] = 'hidden';
133
  }
134
- if ( ! empty( $field['required'] ) ) {
135
  $classes[] = 'required';
136
  }
137
- if ( ! empty( $field['class'] ) ) {
138
  $classes[] = $field['class'];
139
  }
140
 
@@ -167,6 +167,17 @@ if ( ! class_exists( 'RWMB_Field ' ) ) {
167
  return '';
168
  }
169
 
 
 
 
 
 
 
 
 
 
 
 
170
  /**
171
  * Show begin HTML markup for fields
172
  *
@@ -176,6 +187,10 @@ if ( ! class_exists( 'RWMB_Field ' ) ) {
176
  * @return string
177
  */
178
  static function begin_html( $meta, $field ) {
 
 
 
 
179
  if ( empty( $field['name'] ) ) {
180
  return '<div class="rwmb-input">';
181
  }
@@ -199,6 +214,10 @@ if ( ! class_exists( 'RWMB_Field ' ) ) {
199
  * @return string
200
  */
201
  static function end_html( $meta, $field ) {
 
 
 
 
202
  $button = $field['clone'] ? call_user_func( array( RW_Meta_Box::get_class_name( $field ), 'add_clone_button' ) ) : '';
203
  $desc = $field['desc'] ? "<p id='{$field['id']}_description' class='description'>{$field['desc']}</p>" : '';
204
 
@@ -236,10 +255,10 @@ if ( ! class_exists( 'RWMB_Field ' ) ) {
236
  * @return mixed
237
  */
238
  static function meta( $post_id, $saved, $field ) {
239
- $meta = get_post_meta( $post_id, $field['id'], ! $field['multiple'] );
240
 
241
  // Use $field['std'] only when the meta box hasn't been saved (i.e. the first time we run)
242
- $meta = ( ! $saved && '' === $meta || array() === $meta ) ? $field['std'] : $meta;
243
 
244
  // Escape attributes for non-wysiwyg fields
245
  if ( 'wysiwyg' !== $field['type'] ) {
@@ -282,12 +301,12 @@ if ( ! class_exists( 'RWMB_Field ' ) ) {
282
 
283
  if ( $field['multiple'] ) {
284
  foreach ( $new as $new_value ) {
285
- if ( ! in_array( $new_value, $old ) ) {
286
  add_post_meta( $post_id, $name, $new_value, false );
287
  }
288
  }
289
  foreach ( $old as $old_value ) {
290
- if ( ! in_array( $old_value, $new ) ) {
291
  delete_post_meta( $post_id, $name, $old_value );
292
  }
293
  }
1
  <?php
2
+ if ( !class_exists( 'RWMB_Field ' ) ) {
3
  class RWMB_Field {
4
  /**
5
  * Add actions
131
  if ( 'hidden' === $field['type'] ) {
132
  $classes[] = 'hidden';
133
  }
134
+ if ( !empty( $field['required'] ) ) {
135
  $classes[] = 'required';
136
  }
137
+ if ( !empty( $field['class'] ) ) {
138
  $classes[] = $field['class'];
139
  }
140
 
167
  return '';
168
  }
169
 
170
+ static function _sanitize_args() {
171
+ $args = func_get_args();
172
+ $size = sizeof( $args );
173
+ if ( $size == 2 ) {
174
+ return array( $args[0], $args[1], '' );
175
+ } elseif ( $size == 3 ) {
176
+ return array( $args[1], $args[2], $args[0] );
177
+ }
178
+ return $args;
179
+ }
180
+
181
  /**
182
  * Show begin HTML markup for fields
183
  *
187
  * @return string
188
  */
189
  static function begin_html( $meta, $field ) {
190
+
191
+ $args = call_user_func_array( array( __CLASS__, '_sanitize_args' ), func_get_args() );
192
+ list( $meta, $field, $html ) = $args;
193
+
194
  if ( empty( $field['name'] ) ) {
195
  return '<div class="rwmb-input">';
196
  }
214
  * @return string
215
  */
216
  static function end_html( $meta, $field ) {
217
+
218
+ $args = call_user_func_array( array( __CLASS__, '_sanitize_args' ), func_get_args() );
219
+ list( $meta, $field, $html ) = $args;
220
+
221
  $button = $field['clone'] ? call_user_func( array( RW_Meta_Box::get_class_name( $field ), 'add_clone_button' ) ) : '';
222
  $desc = $field['desc'] ? "<p id='{$field['id']}_description' class='description'>{$field['desc']}</p>" : '';
223
 
255
  * @return mixed
256
  */
257
  static function meta( $post_id, $saved, $field ) {
258
+ $meta = get_post_meta( $post_id, $field['id'], !$field['multiple'] );
259
 
260
  // Use $field['std'] only when the meta box hasn't been saved (i.e. the first time we run)
261
+ $meta = ( !$saved && '' === $meta || array() === $meta ) ? $field['std'] : $meta;
262
 
263
  // Escape attributes for non-wysiwyg fields
264
  if ( 'wysiwyg' !== $field['type'] ) {
301
 
302
  if ( $field['multiple'] ) {
303
  foreach ( $new as $new_value ) {
304
+ if ( !in_array( $new_value, $old ) ) {
305
  add_post_meta( $post_id, $name, $new_value, false );
306
  }
307
  }
308
  foreach ( $old as $old_value ) {
309
+ if ( !in_array( $old_value, $new ) ) {
310
  delete_post_meta( $post_id, $name, $old_value );
311
  }
312
  }
inc/libraries/meta-box/meta-box.php CHANGED
@@ -12,36 +12,39 @@ License: GPL2+
12
  // Prevent loading this file directly
13
  defined( 'ABSPATH' ) || exit;
14
 
15
- // Script version, used to add version for scripts and styles
16
- define( 'RWMB_VER', '4.4.1' );
17
 
18
- // Define plugin URLs, for fast enqueuing scripts and styles
19
- if ( ! defined( 'RWMB_URL' ) ) {
20
- define( 'RWMB_URL', plugin_dir_url( __FILE__ ) );
21
- }
22
- define( 'RWMB_JS_URL', trailingslashit( RWMB_URL . 'js' ) );
23
- define( 'RWMB_CSS_URL', trailingslashit( RWMB_URL . 'css' ) );
24
 
25
- // Plugin paths, for including files
26
- if ( ! defined( 'RWMB_DIR' ) ) {
27
- define( 'RWMB_DIR', plugin_dir_path( __FILE__ ) );
28
- }
29
- define( 'RWMB_INC_DIR', trailingslashit( RWMB_DIR . 'inc' ) );
30
- define( 'RWMB_FIELDS_DIR', trailingslashit( RWMB_INC_DIR . 'fields' ) );
31
 
32
- // Optimize code for loading plugin files ONLY on admin side
33
- // @see http://www.deluxeblogtips.com/?p=345
 
 
 
 
 
 
 
34
 
35
- // Helper function to retrieve meta value
36
- require_once RWMB_INC_DIR . 'helpers.php';
37
 
38
- if(!defined('LP_METABOX_INC')){
39
- define('LP_METABOX_INC', LP_PLUGIN_PATH . 'inc/libraries/meta-box/inc/');
 
40
  }
41
 
42
  if ( is_admin() ) {
43
  //require_once RWMB_INC_DIR . 'common.php';
44
- if(!class_exists('RWMB_Field')){
45
  require_once LP_METABOX_INC . 'field.php';
46
  }
47
  // Field classes
@@ -51,7 +54,8 @@ if ( is_admin() ) {
51
 
52
  // Main file
53
  require_once LP_METABOX_INC . 'meta-box.php';
54
- if(!function_exists('rwmb_register_meta_boxes')){
55
  require_once LP_METABOX_INC . 'init.php';
56
  }
57
  }
 
12
  // Prevent loading this file directly
13
  defined( 'ABSPATH' ) || exit;
14
 
15
+ if ( !defined( 'RWMB_VER' ) ) {
 
16
 
17
+ // Script version, used to add version for scripts and styles
18
+ define( 'RWMB_VER', '4.4.1' );
 
 
 
 
19
 
20
+ // Define plugin URLs, for fast enqueuing scripts and styles
21
+ if ( !defined( 'RWMB_URL' ) ) {
22
+ define( 'RWMB_URL', plugin_dir_url( __FILE__ ) );
23
+ }
24
+ define( 'RWMB_JS_URL', trailingslashit( RWMB_URL . 'js' ) );
25
+ define( 'RWMB_CSS_URL', trailingslashit( RWMB_URL . 'css' ) );
26
 
27
+ // Plugin paths, for including files
28
+ if ( !defined( 'RWMB_DIR' ) ) {
29
+ define( 'RWMB_DIR', plugin_dir_path( __FILE__ ) );
30
+ }
31
+ define( 'RWMB_INC_DIR', trailingslashit( RWMB_DIR . 'inc' ) );
32
+ define( 'RWMB_FIELDS_DIR', trailingslashit( RWMB_INC_DIR . 'fields' ) );
33
+
34
+ // Optimize code for loading plugin files ONLY on admin side
35
+ // @see http://www.deluxeblogtips.com/?p=345
36
 
37
+ // Helper function to retrieve meta value
38
+ require_once RWMB_INC_DIR . 'helpers.php';
39
 
40
+ }
41
+ if ( !defined( 'LP_METABOX_INC' ) ) {
42
+ define( 'LP_METABOX_INC', LP_PLUGIN_PATH . 'inc/libraries/meta-box/inc/' );
43
  }
44
 
45
  if ( is_admin() ) {
46
  //require_once RWMB_INC_DIR . 'common.php';
47
+ if ( !class_exists( 'RWMB_Field' ) ) {
48
  require_once LP_METABOX_INC . 'field.php';
49
  }
50
  // Field classes
54
 
55
  // Main file
56
  require_once LP_METABOX_INC . 'meta-box.php';
57
+ if ( !function_exists( 'rwmb_register_meta_boxes' ) ) {
58
  require_once LP_METABOX_INC . 'init.php';
59
  }
60
  }
61
+ do_action( 'learn_press_meta_box_loaded' );
inc/lp-constants.php CHANGED
@@ -4,7 +4,7 @@
4
  */
5
  $upload_dir = wp_upload_dir();
6
  // version
7
- define( 'LEARNPRESS_VERSION', '2.1.1' );
8
 
9
  define( 'LP_WP_CONTENT', basename( WP_CONTENT_DIR ) );
10
 
4
  */
5
  $upload_dir = wp_upload_dir();
6
  // version
7
+ define( 'LEARNPRESS_VERSION', '2.1.2' );
8
 
9
  define( 'LP_WP_CONTENT', basename( WP_CONTENT_DIR ) );
10
 
inc/lp-core-functions.php CHANGED
@@ -197,7 +197,7 @@ function learn_press_sanitize_url( $url, $trailingslashit = true ) {
197
  $url_without_http = $matches[2];
198
  $url_without_http = preg_replace( '![/]+!', '/', $url_without_http );
199
  $url = $matches[1] . $url_without_http;
200
- return $trailingslashit ? trailingslashit( $url ) : untrailingslashit( $url );
201
  }
202
  return $url;
203
  }
@@ -479,12 +479,12 @@ if ( !function_exists( 'learn_press_advertise_in_admin' ) ) {
479
  $theme['description'] = implode( " ", $theme['description'] ) . " ...";
480
  ?>
481
 
482
- <div id="thimpress-<?php echo esc_attr( $theme['id'] ); ?>" class="item">
483
- <div class="theme-thumbnail">
484
- <a href="<?php echo esc_url( $theme['url'] ); ?>">
485
- <img src="<?php echo esc_url( $theme['previews']['landscape_preview']['landscape_url'] ) ?>" />
486
- </a>
487
- </div>
488
 
489
  <div class="theme-detail">
490
  <h2><a href="<?php echo esc_url( $theme['url'] ); ?>"><?php echo $theme['name']; ?></a></h2>
@@ -2182,8 +2182,7 @@ function learn_press_user_profile_link( $user_id = 0, $tab = null ) {
2182
  } else {
2183
  if ( is_numeric( $user_id ) ) {
2184
  $user = get_user_by( 'id', $user_id );
2185
- }
2186
- else {
2187
  $user = get_user_by( 'login', $user_id );
2188
  }
2189
  }
@@ -2648,6 +2647,17 @@ function learn_press_is_added_to_cart( $course_id ) {
2648
  return $cart->has_item( $course_id );
2649
  }
2650
 
 
 
 
 
 
 
 
 
 
 
 
2651
  /**
2652
  * Create some warning messages:
2653
  * + LP Profile page is not setup
197
  $url_without_http = $matches[2];
198
  $url_without_http = preg_replace( '![/]+!', '/', $url_without_http );
199
  $url = $matches[1] . $url_without_http;
200
+ return ( $trailingslashit && strpos( $url, '?' ) === false ) ? trailingslashit( $url ) : untrailingslashit( $url );
201
  }
202
  return $url;
203
  }
479
  $theme['description'] = implode( " ", $theme['description'] ) . " ...";
480
  ?>
481
 
482
+ <div id="thimpress-<?php echo esc_attr( $theme['id'] ); ?>" class="item">
483
+ <div class="theme-thumbnail">
484
+ <a href="<?php echo esc_url( $theme['url'] ); ?>">
485
+ <img src="<?php echo esc_url( $theme['previews']['landscape_preview']['landscape_url'] ) ?>" />
486
+ </a>
487
+ </div>
488
 
489
  <div class="theme-detail">
490
  <h2><a href="<?php echo esc_url( $theme['url'] ); ?>"><?php echo $theme['name']; ?></a></h2>
2182
  } else {
2183
  if ( is_numeric( $user_id ) ) {
2184
  $user = get_user_by( 'id', $user_id );
2185
+ } else {
 
2186
  $user = get_user_by( 'login', $user_id );
2187
  }
2188
  }
2647
  return $cart->has_item( $course_id );
2648
  }
2649
 
2650
+ function learn_press_get_requested_post_type() {
2651
+ global $pagenow;
2652
+ if ( $pagenow == 'post-new.php' && !empty( $_GET['post_type'] ) ) {
2653
+ $post_type = $_REQUEST['post_type'];
2654
+ } else {
2655
+ $post_id = learn_press_get_post();
2656
+ $post_type = get_post_type( $post_id );
2657
+ }
2658
+ return $post_type;
2659
+ }
2660
+
2661
  /**
2662
  * Create some warning messages:
2663
  * + LP Profile page is not setup
inc/order/lp-order-functions.php CHANGED
@@ -497,10 +497,10 @@ function learn_press_get_orders( $args = array() ) {
497
  $args['meta_query'][] = $meta_query;
498
  }
499
 
500
- $args = apply_filters( 'learn_press_get_orders_get_posts_args', $args );
501
- $orders = get_posts( $args );
502
  if ( $orders ) {
503
- // do somethings
504
  }
505
 
506
  return apply_filters( 'learn_press_get_orders', $orders, $args );
@@ -650,7 +650,14 @@ function learn_press_get_order_status_label( $order_id = 0 ) {
650
  }
651
 
652
  function learn_press_get_order_statuses( $prefix = true ) {
653
- $prefix = $prefix ? 'lp-' : '';
 
 
 
 
 
 
 
654
  $order_statuses = array(
655
  $prefix . 'pending' => _x( 'Pending', 'Order status', 'learnpress' ),
656
  $prefix . 'processing' => _x( 'Processing', 'Order status', 'learnpress' ),
@@ -659,11 +666,72 @@ function learn_press_get_order_statuses( $prefix = true ) {
659
  // $prefix . 'refunded' => _x( 'Refunded', 'Order status', 'learnpress' ),
660
  // $prefix . 'failed' => _x( 'Failed', 'Order status', 'learnpress' ),
661
  // $prefix . 'on-hold' => _x( 'On Hold', 'Order status', 'learnpress' ),
662
- );
663
 
664
  return apply_filters( 'learn_press_order_statuses', $order_statuses );
665
  }
666
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
667
  function _learn_press_get_order_status_description( $status ) {
668
  static $descriptions = null;
669
  $descriptions = array(
@@ -721,16 +789,16 @@ function _learn_press_checkout_auto_enroll_free_course( $result, $order_id ) {
721
  }
722
 
723
  if ( !function_exists( '_learn_press_total_raised' ) ) {
724
- function _learn_press_total_raised() {
725
- $orders = learn_press_get_orders( array( 'post_status' => 'lp-completed' ) );
726
- $total = 0;
727
- if ( $orders ) {
728
- foreach( $orders as $order ) {
729
- $order = learn_press_get_order( $order->ID );
730
- $total = $total + $order->order_total;
731
- }
732
- }
733
-
734
- return apply_filters( '_learn_press_total_raised', learn_press_format_price( $total, true ), $total );
735
- }
736
  }
497
  $args['meta_query'][] = $meta_query;
498
  }
499
 
500
+ $args = apply_filters( 'learn_press_get_orders_get_posts_args', $args );
501
+ $orders = get_posts( $args );
502
  if ( $orders ) {
503
+ // do somethings
504
  }
505
 
506
  return apply_filters( 'learn_press_get_orders', $orders, $args );
650
  }
651
 
652
  function learn_press_get_order_statuses( $prefix = true ) {
653
+ $prefix = $prefix ? 'lp-' : '';
654
+ /*$register_statues = learn_press_get_register_order_statuses();
655
+ $order_statuses= array();
656
+ foreach($register_statues as $k => $v){
657
+ if($prefix){
658
+
659
+ }
660
+ }*/
661
  $order_statuses = array(
662
  $prefix . 'pending' => _x( 'Pending', 'Order status', 'learnpress' ),
663
  $prefix . 'processing' => _x( 'Processing', 'Order status', 'learnpress' ),
666
  // $prefix . 'refunded' => _x( 'Refunded', 'Order status', 'learnpress' ),
667
  // $prefix . 'failed' => _x( 'Failed', 'Order status', 'learnpress' ),
668
  // $prefix . 'on-hold' => _x( 'On Hold', 'Order status', 'learnpress' ),
669
+ );
670
 
671
  return apply_filters( 'learn_press_order_statuses', $order_statuses );
672
  }
673
 
674
+ function learn_press_get_register_order_statuses() {
675
+ $order_statues = array();
676
+ $order_statues['lp-completed'] = array(
677
+ 'label' => _x( 'Completed', 'Order status', 'learnpress' ),
678
+ 'public' => false,
679
+ 'exclude_from_search' => false,
680
+ 'show_in_admin_all_list' => true,
681
+ 'show_in_admin_status_list' => true,
682
+ 'label_count' => _n_noop( 'Completed <span class="count">(%s)</span>', 'Completed <span class="count">(%s)</span>', 'learnpress' )
683
+ );
684
+ $order_statues['lp-processing'] = array(
685
+ 'label' => _x( 'Processing', 'Order status', 'learnpress' ),
686
+ 'public' => false,
687
+ 'exclude_from_search' => false,
688
+ 'show_in_admin_all_list' => true,
689
+ 'show_in_admin_status_list' => true,
690
+ 'label_count' => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>', 'learnpress' )
691
+ );
692
+ $order_statues['lp-pending'] = array(
693
+ 'label' => _x( 'Pending Payment', 'Order status', 'learnpress' ),
694
+ 'public' => false,
695
+ 'exclude_from_search' => false,
696
+ 'show_in_admin_all_list' => true,
697
+ 'show_in_admin_status_list' => true,
698
+ 'label_count' => _n_noop( 'Pending Payment <span class="count">(%s)</span>', 'Pending Payment <span class="count">(%s)</span>', 'learnpress' )
699
+ );
700
+ $order_statues['lp-cancelled'] = array(
701
+ 'label' => _x( 'Cancelled', 'Order status', 'learnpress' ),
702
+ 'public' => false,
703
+ 'exclude_from_search' => false,
704
+ 'show_in_admin_all_list' => true,
705
+ 'show_in_admin_status_list' => true,
706
+ 'label_count' => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'learnpress' )
707
+ );
708
+ // $lp_order_statuses['lp-on-hold'] = array(
709
+ // 'label' => _x( 'On Hold', 'Order status', 'learnpress' ),
710
+ // 'public' => false,
711
+ // 'exclude_from_search' => false,
712
+ // 'show_in_admin_all_list' => true,
713
+ // 'show_in_admin_status_list' => true,
714
+ // 'label_count' => _n_noop( 'On Hold <span class="count">(%s)</span>', 'On Hold <span class="count">(%s)</span>', 'learnpress' )
715
+ // );
716
+ // $lp_order_statuses['lp-refunded'] = array(
717
+ // 'label' => _x( 'Refunded', 'Order status', 'learnpress' ),
718
+ // 'public' => false,
719
+ // 'exclude_from_search' => false,
720
+ // 'show_in_admin_all_list' => true,
721
+ // 'show_in_admin_status_list' => true,
722
+ // 'label_count' => _n_noop( 'Refunded <span class="count">(%s)</span>', 'Refunded <span class="count">(%s)</span>', 'learnpress' )
723
+ // );
724
+ // $lp_order_statuses['lp-failed'] = array(
725
+ // 'label' => _x( 'Failed', 'Order status', 'learnpress' ),
726
+ // 'public' => false,
727
+ // 'exclude_from_search' => false,
728
+ // 'show_in_admin_all_list' => true,
729
+ // 'show_in_admin_status_list' => true,
730
+ // 'label_count' => _n_noop( 'Failed <span class="count">(%s)</span>', 'Failed <span class="count">(%s)</span>', 'learnpress' )
731
+ // );
732
+ return $order_statues;
733
+ }
734
+
735
  function _learn_press_get_order_status_description( $status ) {
736
  static $descriptions = null;
737
  $descriptions = array(
789
  }
790
 
791
  if ( !function_exists( '_learn_press_total_raised' ) ) {
792
+ function _learn_press_total_raised() {
793
+ $orders = learn_press_get_orders( array( 'post_status' => 'lp-completed' ) );
794
+ $total = 0;
795
+ if ( $orders ) {
796
+ foreach ( $orders as $order ) {
797
+ $order = learn_press_get_order( $order->ID );
798
+ $total = $total + $order->order_total;
799
+ }
800
+ }
801
+
802
+ return apply_filters( '_learn_press_total_raised', learn_press_format_price( $total, true ), $total );
803
+ }
804
  }
inc/user/abstract-lp-user.php CHANGED
@@ -951,10 +951,10 @@ class LP_Abstract_User {
951
  }
952
 
953
  }
954
- $user = learn_press_get_current_user();
955
- $history = $user->get_quiz_results( $quiz_id, $course_id, true );
956
  $current_question_id = learn_press_get_user_item_meta( $history->history_id, 'lp_current_question_after_close', true );
957
- if ( !empty($current_question_id) ) {
958
  $question_id = $current_question_id;
959
  }
960
 
@@ -1123,9 +1123,9 @@ class LP_Abstract_User {
1123
  /**
1124
  * Return true if user can enroll a course
1125
  *
1126
- * @param int
1127
  *
1128
- * @return bool
1129
  */
1130
  public function can_enroll_course( $course_id ) {
1131
  # condition
@@ -1139,6 +1139,8 @@ class LP_Abstract_User {
1139
  $enrollable = false;
1140
  } elseif ( !$course->is_required_enroll() ) {
1141
  $enrollable = false;
 
 
1142
  } elseif ( $course->is_free() && $this->is_exists() ) {
1143
  $enrollable = true;
1144
  } elseif ( $course->is_purchasable() && ( $this->has_purchased_course( $course_id ) ) ) {
951
  }
952
 
953
  }
954
+ $user = learn_press_get_current_user();
955
+ $history = $user->get_quiz_results( $quiz_id, $course_id, true );
956
  $current_question_id = learn_press_get_user_item_meta( $history->history_id, 'lp_current_question_after_close', true );
957
+ if ( !empty( $current_question_id ) ) {
958
  $question_id = $current_question_id;
959
  }
960
 
1123
  /**
1124
  * Return true if user can enroll a course
1125
  *
1126
+ * @param $course_id
1127
  *
1128
+ * @return bool|string
1129
  */
1130
  public function can_enroll_course( $course_id ) {
1131
  # condition
1139
  $enrollable = false;
1140
  } elseif ( !$course->is_required_enroll() ) {
1141
  $enrollable = false;
1142
+ } elseif ( !$course->is_purchasable() ) {
1143
+ $enrollable = 'enough';
1144
  } elseif ( $course->is_free() && $this->is_exists() ) {
1145
  $enrollable = true;
1146
  } elseif ( $course->is_purchasable() && ( $this->has_purchased_course( $course_id ) ) ) {
inc/user/class-lp-user-factory.php CHANGED
@@ -108,7 +108,7 @@ class LP_User_Factory {
108
  * @param $the_user
109
  * @param bool $force
110
  *
111
- * @return mixed
112
  */
113
  public static function get_user( $the_user, $force = false ) {
114
  if ( is_numeric( $the_user ) ) {
108
  * @param $the_user
109
  * @param bool $force
110
  *
111
+ * @return LP_Abstract_User
112
  */
113
  public static function get_user( $the_user, $force = false ) {
114
  if ( is_numeric( $the_user ) ) {
languages/learnpress-es_ES.mo ADDED
Binary file
languages/learnpress-es_ES.po ADDED
@@ -0,0 +1,5640 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: \n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2017-01-08 10:37+0100\n"
11
+ "PO-Revision-Date: 2017-01-16 10:16+0100\n"
12
+ "Language-Team: \n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: 8bit\n"
16
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
+ "X-Generator: Poedit 1.8.9\n"
18
+ "Last-Translator: \n"
19
+ "Language: es\n"
20
+
21
+ #: inc/class-lp-ajax.php:101
22
+ msgid "Invalid course"
23
+ msgstr "Curso Inválido"
24
+
25
+ #: inc/class-lp-ajax.php:113
26
+ #, php-format
27
+ msgid "You have enrolled in this course <strong>%s</strong>"
28
+ msgstr "Estás inscrito en este curso <strong>%s</strong>"
29
+
30
+ #: inc/class-lp-ajax.php:116
31
+ #, php-format
32
+ msgid ""
33
+ "Sorry! The course <strong>%s</strong> you want to enroll has failed! Please "
34
+ "contact site's administrator for more information."
35
+ msgstr ""
36
+ "¡ Lo siento! El curso <strong>%s</strong> al que deseas inscribirse ha "
37
+ "fallado! Para más información por favor póngase en contacto con "
38
+ "administrador del sitio."
39
+
40
+ #: inc/class-lp-ajax.php:142
41
+ msgid "Please enter username"
42
+ msgstr "Por favor, introduce tu nombre de usuario"
43
+
44
+ #: inc/class-lp-ajax.php:146
45
+ msgid "Please enter password"
46
+ msgstr "Introduce una contraseña"
47
+
48
+ #: inc/class-lp-ajax.php:194
49
+ msgid "Please enter your username and/or password"
50
+ msgstr "Ingresa tu nombre de usuario y contraseña."
51
+
52
+ #: inc/class-lp-ajax.php:212
53
+ #, php-format
54
+ msgid "Welcome back, %s. You've already enrolled this course"
55
+ msgstr "Bienvenido de nuevo, %s. Ya te has inscrito este curso"
56
+
57
+ #: inc/class-lp-ajax.php:224
58
+ #, php-format
59
+ msgid "Welcome back, %s! Redirecting..."
60
+ msgstr "Bienvenido de nuevo, %s! Redirigiendo ..."
61
+
62
+ #: inc/class-lp-ajax.php:260
63
+ msgid "Access denied!"
64
+ msgstr "Acceso denegado!"
65
+
66
+ #: inc/class-lp-ajax.php:268
67
+ #, php-format
68
+ msgid "You have finished this course \"%s\""
69
+ msgstr "Has completado el curso \"%s\""
70
+
71
+ #: inc/class-lp-ajax.php:273
72
+ msgid ""
73
+ "Error! You cannot finish this course. Please contact your administrator for "
74
+ "more information."
75
+ msgstr ""
76
+ "¡Error! No puedes finalizar este curso. Por favor, contacta con tu "
77
+ "administrador para más información."
78
+
79
+ #: inc/class-lp-ajax.php:292
80
+ msgid "Bad request!"
81
+ msgstr "Solicitud incorrecta!"
82
+
83
+ #: inc/class-lp-ajax.php:297
84
+ msgid "Error while completing lesson."
85
+ msgstr "Error al completar la lección."
86
+
87
+ #: inc/class-lp-ajax.php:299
88
+ msgid "You have completed lesson."
89
+ msgstr "Has completado esta lección."
90
+
91
+ #: inc/class-lp-ajax.php:387
92
+ msgid "Load question error. Try again!"
93
+ msgstr "Error. Por favor, vuelve a intentarlo."
94
+
95
+ #: inc/class-lp-ajax.php:395
96
+ msgid "Something is wrong. Try again!"
97
+ msgstr "Algo está mal, por favor, inténtelo de nuevo."
98
+
99
+ #: inc/class-lp-ajax.php:446
100
+ msgid "Something went wrong. Please try again!"
101
+ msgstr "Algo salió mal. Vuelve a intentarlo."
102
+
103
+ #: inc/class-lp-ajax.php:494 inc/class-lp-ajax.php:537
104
+ msgid "Error! Invalid lesson or security checked failure"
105
+ msgstr "¡Error! Lección inválida o fallo en la comprobación de seguridad"
106
+
107
+ #: inc/class-lp-ajax.php:501 inc/admin/lp-admin-functions.php:930
108
+ #: inc/admin/views/statistics/orders.php:63
109
+ #: templates/content-lesson/__complete-button.php:43
110
+ #: templates/single-course/content-item-lp_lesson.php:24
111
+ #: templates/single-course/section/item-meta.php:34
112
+ msgid "Completed"
113
+ msgstr "Completado"
114
+
115
+ #: inc/class-lp-ajax.php:508
116
+ msgid ""
117
+ "Congratulations! You have completed this lesson and you can finish course."
118
+ msgstr ""
119
+ "¡ Felicidades! Has completado esta lección, y puedes terminar el curso."
120
+
121
+ #: inc/class-lp-ajax.php:510
122
+ msgid "Congratulations! You have completed this lesson."
123
+ msgstr "¡Felicidades! Has aprobado esta lección."
124
+
125
+ #: inc/class-lp-ajax.php:541
126
+ msgid "Error!"
127
+ msgstr "Error!"
128
+
129
+ #: inc/class-lp-ajax.php:543
130
+ #, php-format
131
+ msgid "You have retaken course \"%s\""
132
+ msgstr "Has repetido el Curso %s"
133
+
134
+ #: inc/class-lp-ajax.php:548
135
+ msgid "Error! You can not retake course"
136
+ msgstr "¡Error! No se puede volver a tomar curso"
137
+
138
+ #: inc/class-lp-ajax.php:560
139
+ msgid "The quiz ID is empty"
140
+ msgstr "El ID del cuestionario está vacío"
141
+
142
+ #: inc/class-lp-ajax.php:572
143
+ msgid "Something is wrong! Please try again"
144
+ msgstr "Algo está mal, por favor, inténtalo de nuevo."
145
+
146
+ #: inc/class-lp-ajax.php:581
147
+ msgid "Please login to take this quiz"
148
+ msgstr "Inicie sesión para ver este cuestionario"
149
+
150
+ #: inc/class-lp-ajax.php:592
151
+ msgid "You have completed this quiz"
152
+ msgstr "Has completado el examen"
153
+
154
+ #: inc/class-lp-ajax.php:601
155
+ msgid "You have started this quiz"
156
+ msgstr "Has iniciado este examen"
157
+
158
+ #: inc/class-lp-assets.php:791
159
+ msgid "Password and confirmation password do not match"
160
+ msgstr "La nueva contraseña y la confirmación de contraseña no coinciden."
161
+
162
+ #: inc/class-lp-assets.php:792
163
+ msgid "This field is required"
164
+ msgstr "El campo es obligatorio."
165
+
166
+ #: inc/class-lp-breadcrumb.php:124
167
+ msgid "Error 404"
168
+ msgstr "Error 404"
169
+
170
+ #: inc/class-lp-breadcrumb.php:216
171
+ #, php-format
172
+ msgid "Products tagged &ldquo;%s&rdquo;"
173
+ msgstr "Productos con la etiqueta &ldquo;%s&rdquo;"
174
+
175
+ #: inc/class-lp-breadcrumb.php:267
176
+ #, php-format
177
+ msgid "Posts tagged &ldquo;%s&rdquo;"
178
+ msgstr "Posts etiquetados &ldquo;%s&rdquo;"
179
+
180
+ #: inc/class-lp-breadcrumb.php:309
181
+ #, php-format
182
+ msgid "Author: %s"
183
+ msgstr "Autor: %s"
184
+
185
+ #: inc/class-lp-breadcrumb.php:342
186
+ #, php-format
187
+ msgid "Search results for &ldquo;%s&rdquo;"
188
+ msgstr "Resultados de la búsqueda : &ldquo;%s&rdquo;"
189
+
190
+ #: inc/class-lp-breadcrumb.php:351
191
+ #, php-format
192
+ msgid "Page %d"
193
+ msgstr "Página %d"
194
+
195
+ #: inc/class-lp-checkout.php:55 templates/checkout/form-login.php:40
196
+ msgid "Username"
197
+ msgstr "Nombre de usuario"
198
+
199
+ #: inc/class-lp-checkout.php:56 templates/checkout/form-login.php:44
200
+ msgid "Password"
201
+ msgstr "Contraseña"
202
+
203
+ #: inc/class-lp-checkout.php:96 inc/class-lp-checkout.php:105
204
+ #: inc/class-lp-checkout.php:122
205
+ #, php-format
206
+ msgid "Error %d: Unable to create order. Please try again."
207
+ msgstr "Error %d: Imposible crear la órden. Por favor, inténtelo de nuevo."
208
+
209
+ #: inc/class-lp-checkout.php:117
210
+ msgid "Item does not exists!"
211
+ msgstr "Este artículo no existe!"
212
+
213
+ #: inc/class-lp-checkout.php:167
214
+ msgid "Please enter user login"
215
+ msgstr "Por favor, introduce tu nombre de usuario"
216
+
217
+ #: inc/class-lp-checkout.php:171
218
+ msgid "Please enter user password"
219
+ msgstr "Por favor, introduce contraseña de usuario"
220
+
221
+ #: inc/class-lp-checkout.php:221
222
+ msgid "Please select a payment method"
223
+ msgstr "Selecciona tu método de pago"
224
+
225
+ #: inc/class-lp-checkout.php:247
226
+ #, php-format
227
+ msgid "Item %s does not exists."
228
+ msgstr "Artículo %s no existe."
229
+
230
+ #: inc/class-lp-checkout.php:249
231
+ #, php-format
232
+ msgid "Item \"%s\" is not purchasable."
233
+ msgstr "Artículo \"%s\" no se puede comprar."
234
+
235
+ #: inc/class-lp-checkout.php:260
236
+ msgid "Invalid payment method."
237
+ msgstr "Método de pago no válido."
238
+
239
+ #: inc/class-lp-emails.php:42 inc/class-lp-emails.php:49
240
+ msgid "Cheatin&#8217; huh?"
241
+ msgstr "Haciendo trampa; ¿eh?"
242
+
243
+ #: inc/class-lp-install.php:89
244
+ msgid ""
245
+ "It seems like you have updated LearnPress from an older version and there "
246
+ "are some outdated courses or data that need to be upgraded."
247
+ msgstr ""
248
+ "Parece haber actualizado LearnPress de una versión anterior y hay algunos "
249
+ "cursos obsoletos o datos que necesitan ser actualizados."
250
+
251
+ #: inc/class-lp-install.php:90
252
+ msgid "Do not ask again."
253
+ msgstr "No volver a preguntar."
254
+
255
+ #: inc/class-lp-install.php:90 inc/custom-post-types/course.php:145
256
+ msgid "Ok"
257
+ msgstr ""
258
+
259
+ #: inc/class-lp-install.php:90 inc/lp-core-functions.php:1859
260
+ #: inc/admin/class-lp-admin-ajax.php:851 inc/admin/class-lp-admin.php:114
261
+ #: inc/admin/views/meta-boxes/course/loop-section.php:48
262
+ #: inc/custom-post-types/course.php:735 templates/profile/tabs/edit.php:79
263
+ #: templates/profile/tabs/orders.php:30
264
+ msgid "Cancel"
265
+ msgstr "Cancelar"
266
+
267
+ #: inc/class-lp-install.php:91
268
+ msgid "Upgrade now"
269
+ msgstr "Actualiza ahora"
270
+
271
+ #: inc/class-lp-install.php:91
272
+ msgid "No, thank!"
273
+ msgstr "No, gracias!"
274
+
275
+ #: inc/class-lp-install.php:98
276
+ msgid ""
277
+ "LearnPress has upgraded and need to upgrade the database before you can work "
278
+ "with it. Please notify the site administrator."
279
+ msgstr ""
280
+ "Memtoría Online se ha actualizado y necesita actualizar la base de datos "
281
+ "antes de que usted puede trabajar con él. Por favor notifique al "
282
+ "administrador del sitio."
283
+
284
+ #: inc/class-lp-install.php:114
285
+ msgid "Thank you for using LearnPress"
286
+ msgstr "Gracias por usar Mentoría online"
287
+
288
+ #: inc/class-lp-multi-language.php:51 inc/libraries/meta-box/inc/common.php:48
289
+ msgid "Documentation"
290
+ msgstr "Documentación"
291
+
292
+ #: inc/class-lp-multi-language.php:52 inc/admin/class-lp-admin-menu.php:70
293
+ #: inc/admin/class-lp-admin-menu.php:71
294
+ msgid "Add-ons"
295
+ msgstr "Complementos"
296
+
297
+ #: inc/class-lp-shortcodes.php:158 inc/class-lp-shortcodes.php:330
298
+ msgid "Invalid order!"
299
+ msgstr "Pedido no válido."
300
+
301
+ #: inc/class-lp-shortcodes.php:209
302
+ msgid "Please login to fill in this form."
303
+ msgstr "Inicia sesión para rellenar este formulario."
304
+
305
+ #: inc/class-lp-shortcodes.php:212
306
+ msgid "You are a teacher now."
307
+ msgstr "Eres un mentor ahora."
308
+
309
+ #: inc/class-lp-shortcodes.php:215 inc/lp-core-functions.php:1302
310
+ msgid "Your request has been sent! We will get in touch with you soon!"
311
+ msgstr "¡Tu solicitud ha sido enviada! ¡Nos pondremos en contacto pronto!"
312
+
313
+ #: inc/class-lp-shortcodes.php:218
314
+ msgid "Your role is allowed to create a course."
315
+ msgstr "Tu rol te permite crear un curso"
316
+
317
+ #: inc/class-lp-shortcodes.php:230
318
+ msgid "Become a Teacher"
319
+ msgstr "Convertirte en mentor"
320
+
321
+ #: inc/class-lp-shortcodes.php:231
322
+ msgid "Fill in your information and send us to become a teacher."
323
+ msgstr "Rellena tus datos y envíenoslo para convertirse en un mentor"
324
+
325
+ #: inc/class-lp-shortcodes.php:232 templates/global/become-teacher-form.php:13
326
+ msgid "Submit"
327
+ msgstr "Enviar"
328
+
329
+ #: inc/class-lp-shortcodes.php:233 templates/checkout/payment.php:16
330
+ msgid "Processing"
331
+ msgstr "Procesando"
332
+
333
+ #: inc/class-lp-shortcodes.php:239 templates/profile/tabs/edit.php:92
334
+ msgid "Name"
335
+ msgstr "Nombre"
336
+
337
+ #: inc/class-lp-shortcodes.php:241
338
+ msgid "Your name"
339
+ msgstr "Tu nombre"
340
+
341
+ #: inc/class-lp-shortcodes.php:245
342
+ msgid "Email"
343
+ msgstr ""
344
+
345
+ #: inc/class-lp-shortcodes.php:247
346
+ msgid "Your email address"
347
+ msgstr "Tu Email"
348
+
349
+ #: inc/class-lp-shortcodes.php:251
350
+ msgid "Phone"
351
+ msgstr "Teléfono"
352
+
353
+ #: inc/class-lp-shortcodes.php:253
354
+ msgid "Your phone number"
355
+ msgstr "Tu teléfono"
356
+
357
+ #: inc/class-lp-shortcodes.php:289
358
+ #, php-format
359
+ msgid "The user %s is not available!"
360
+ msgstr "El usuario %s no está disponible!"
361
+
362
+ #: inc/class-lp-shortcodes.php:363
363
+ msgid "Forgot password?"
364
+ msgstr "¿Contraseña olvidada?"
365
+
366
+ #: inc/class-lp-shortcodes.php:365
367
+ msgid "Create new account"
368
+ msgstr "Crear nueva cuenta"
369
+
370
+ #: inc/lp-add-on-functions.php:90
371
+ #, php-format
372
+ msgid "Installed <span class=\"count\">(%s)</span>"
373
+ msgstr ""
374
+
375
+ #: inc/lp-add-on-functions.php:95
376
+ #, php-format
377
+ msgid "Add-ons <span class=\"count\">(%s)</span>"
378
+ msgstr ""
379
+
380
+ #: inc/lp-add-on-functions.php:100
381
+ #, php-format
382
+ msgid "Related Themes <span class=\"count\">(%s)</span>"
383
+ msgstr ""
384
+
385
+ #: inc/lp-add-on-functions.php:118 inc/lp-core-functions.php:2177
386
+ #: inc/lp-core-functions.php:2707 inc/admin/lp-admin-actions.php:50
387
+ #: inc/admin/lp-admin-functions.php:558 inc/admin/lp-admin-functions.php:723
388
+ #: inc/admin/lp-admin-functions.php:925 inc/admin/sub-menus/tools.php:321
389
+ #: inc/admin/views/statistics/courses.php:27
390
+ #: inc/admin/views/statistics/courses.php:42
391
+ #: inc/admin/views/statistics/orders.php:28
392
+ #: inc/admin/views/statistics/orders.php:62
393
+ #: inc/admin/views/statistics/users.php:27
394
+ #: inc/admin/views/statistics/users.php:42
395
+ msgid "All"
396
+ msgstr "Todo"
397
+
398
+ #: inc/lp-add-on-functions.php:132
399
+ msgid "Get More"
400
+ msgstr "Obtener más"
401
+
402
+ #: inc/lp-add-on-functions.php:307
403
+ msgid ""
404
+ "An unexpected error occurred. Something may be wrong with WordPress.org or "
405
+ "this server&#8217;s configuration. If you continue to have problems, please "
406
+ "try the <a href=\"https://wordpress.org/support/\">support forums</a>."
407
+ msgstr ""
408
+
409
+ #: inc/lp-add-on-functions.php:307
410
+ msgid ""
411
+ "(WordPress could not establish a secure connection to WordPress.org. Please "
412
+ "contact your server administrator.)"
413
+ msgstr ""
414
+
415
+ #: inc/lp-add-on-functions.php:426
416
+ #, php-format
417
+ msgid "Installing Plugin: %s"
418
+ msgstr ""
419
+
420
+ #: inc/lp-add-on-functions.php:440
421
+ msgid "Not install"
422
+ msgstr "No Instalado"
423
+
424
+ #: inc/lp-add-on-functions.php:445 inc/admin/lp-admin-functions.php:1342
425
+ msgid "Installed"
426
+ msgstr "Instalado"
427
+
428
+ #: inc/lp-add-on-functions.php:455 inc/lp-add-on-functions.php:481
429
+ #: inc/admin/class-lp-plugin-install-list-table.php:420
430
+ msgid "Enabled"
431
+ msgstr "Habilitado"
432
+
433
+ #: inc/lp-add-on-functions.php:455 inc/lp-add-on-functions.php:481
434
+ #: inc/admin/class-lp-plugin-install-list-table.php:422
435
+ msgid "Disabled"
436
+ msgstr "No activado"
437
+
438
+ #: inc/lp-add-on-functions.php:503
439
+ msgid "All add-ons that you have installed"
440
+ msgstr "Todos los complementos que se han instalado"
441
+
442
+ #: inc/lp-add-on-functions.php:513 inc/lp-add-on-functions.php:562
443
+ msgid "All add-ons we provide."
444
+ msgstr "Todos los add-ons"
445
+
446
+ #: inc/lp-add-on-functions.php:514 inc/lp-add-on-functions.php:563
447
+ #, php-format
448
+ msgid "Last checked %s ago"
449
+ msgstr "Última comprobación hace %s."
450
+
451
+ #: inc/lp-add-on-functions.php:515 inc/lp-add-on-functions.php:564
452
+ #, php-format
453
+ msgid "<a href=\"%s\">%s</a>"
454
+ msgstr ""
455
+
456
+ #: inc/lp-add-on-functions.php:515 inc/lp-add-on-functions.php:564
457
+ msgid "Check again!"
458
+ msgstr "Comprobar de nuevo!"
459
+
460
+ #: inc/lp-add-on-functions.php:710
461
+ #: inc/admin/class-lp-plugin-install-list-table.php:362
462
+ #, php-format
463
+ msgid "Install %s now"
464
+ msgstr ""
465
+
466
+ #: inc/lp-add-on-functions.php:710
467
+ msgid "Install Now"
468
+ msgstr ""
469
+
470
+ #: inc/lp-add-on-functions.php:717
471
+ #: inc/admin/class-lp-plugin-install-list-table.php:369
472
+ #, php-format
473
+ msgid "Update %s now"
474
+ msgstr ""
475
+
476
+ #: inc/lp-add-on-functions.php:717
477
+ #: inc/admin/class-lp-plugin-install-list-table.php:369
478
+ #: inc/admin/views/updates/0.9/step-repair-database.php:17
479
+ msgid "Update Now"
480
+ msgstr ""
481
+
482
+ #: inc/lp-add-on-functions.php:723
483
+ msgid "This plugin is already installed and is up to date"
484
+ msgstr ""
485
+
486
+ #: inc/lp-add-on-functions.php:723
487
+ msgctxt "plugin"
488
+ msgid "Installed"
489
+ msgstr ""
490
+
491
+ #: inc/lp-add-on-functions.php:728 inc/lp-add-on-functions.php:737
492
+ #, php-format
493
+ msgid "Disable %s now"
494
+ msgstr ""
495
+
496
+ #: inc/lp-add-on-functions.php:728 inc/lp-add-on-functions.php:737
497
+ msgid "Disable Now"
498
+ msgstr ""
499
+
500
+ #: inc/lp-add-on-functions.php:730 inc/lp-add-on-functions.php:739
501
+ #, php-format
502
+ msgid "Enable %s now"
503
+ msgstr ""
504
+
505
+ #: inc/lp-add-on-functions.php:730 inc/lp-add-on-functions.php:739
506
+ msgid "Enable Now"
507
+ msgstr "Habilitar de nuevo"
508
+
509
+ #: inc/lp-add-on-functions.php:743
510
+ #, php-format
511
+ msgid "Buy %s now"
512
+ msgstr "Comprar %s ahora"
513
+
514
+ #: inc/lp-add-on-functions.php:743 inc/lp-add-on-functions.php:901
515
+ msgid "Buy Now"
516
+ msgstr "Comprar"
517
+
518
+ #: inc/lp-add-on-functions.php:747
519
+ #, php-format
520
+ msgid "Version: %s"
521
+ msgstr "Versión %s"
522
+
523
+ #: inc/lp-add-on-functions.php:755 inc/lp-add-on-functions.php:765
524
+ msgid "No add-on found"
525
+ msgstr "No se han encontrado complementos"
526
+
527
+ #: inc/lp-add-on-functions.php:805
528
+ msgid "Free Add-ons"
529
+ msgstr ""
530
+
531
+ #: inc/lp-add-on-functions.php:830 inc/lp-add-on-functions.php:929
532
+ #, php-format
533
+ msgid "<cite>By %s</cite>"
534
+ msgstr "<cite>Por %s</cite>"
535
+
536
+ #: inc/lp-add-on-functions.php:846
537
+ #: inc/admin/class-lp-plugin-install-list-table.php:454
538
+ msgid "Last Updated:"
539
+ msgstr ""
540
+
541
+ #: inc/lp-add-on-functions.php:847
542
+ #: inc/admin/class-lp-plugin-install-list-table.php:455
543
+ #: inc/custom-post-types/order.php:355
544
+ #, php-format
545
+ msgid "%s ago"
546
+ msgstr "hace %s"
547
+
548
+ #: inc/lp-add-on-functions.php:855
549
+ #: inc/admin/class-lp-plugin-install-list-table.php:461
550
+ msgctxt "Active plugin installs"
551
+ msgid "1+ Million"
552
+ msgstr ""
553
+
554
+ #: inc/lp-add-on-functions.php:859
555
+ #: inc/admin/class-lp-plugin-install-list-table.php:465
556
+ #, php-format
557
+ msgid "%s Active Installs"
558
+ msgstr "%s Instalaciones Activas"
559
+
560
+ #: inc/lp-add-on-functions.php:867
561
+ #: inc/admin/class-lp-plugin-install-list-table.php:471
562
+ msgid "Untested with your version of WordPress"
563
+ msgstr ""
564
+
565
+ #: inc/lp-add-on-functions.php:869
566
+ #: inc/admin/class-lp-plugin-install-list-table.php:473
567
+ msgid "<strong>Incompatible</strong> with your version of WordPress"
568
+ msgstr ""
569
+
570
+ #: inc/lp-add-on-functions.php:871
571
+ #: inc/admin/class-lp-plugin-install-list-table.php:475
572
+ msgid "<strong>Compatible</strong> with your version of WordPress"
573
+ msgstr ""
574
+
575
+ #: inc/lp-add-on-functions.php:884
576
+ msgid "Premium Add-ons"
577
+ msgstr ""
578
+
579
+ #: inc/lp-add-on-functions.php:940
580
+ msgid "No theme found"
581
+ msgstr ""
582
+
583
+ #: inc/lp-add-on-functions.php:963
584
+ msgid "$"
585
+ msgstr ""
586
+
587
+ #: inc/lp-add-on-functions.php:966
588
+ msgid " sales"
589
+ msgstr " ventas"
590
+
591
+ #: inc/lp-add-on-functions.php:982
592
+ msgid "Get it now for only "
593
+ msgstr "Consíguelo ahora por sólo "
594
+
595
+ #: inc/lp-add-on-functions.php:983
596
+ msgid "View Demo"
597
+ msgstr "Ver Demostración"
598
+
599
+ #: inc/lp-core-functions.php:234 inc/lp-template-functions.php:1395
600
+ #: inc/course/lp-course-functions.php:484 inc/custom-post-types/lesson.php:60
601
+ msgid "Lesson"
602
+ msgstr "Lección"
603
+
604
+ #: inc/lp-core-functions.php:235 inc/lp-template-functions.php:1385
605
+ #: inc/admin/settings/class-lp-settings-pages.php:22
606
+ #: inc/course/lp-course-functions.php:485
607
+ #: inc/custom-post-types/question.php:244 inc/custom-post-types/quiz.php:90
608
+ msgid "Quiz"
609
+ msgstr "Examen"
610
+
611
+ #: inc/lp-core-functions.php:562
612
+ msgid "<"
613
+ msgstr ""
614
+
615
+ #: inc/lp-core-functions.php:563
616
+ msgid ">"
617
+ msgstr ""
618
+
619
+ #: inc/lp-core-functions.php:661
620
+ msgid "Minute(s)"
621
+ msgstr "Minuto(s)"
622
+
623
+ #: inc/lp-core-functions.php:662
624
+ msgid "Hour(s)"
625
+ msgstr "Hora(s)"
626
+
627
+ #: inc/lp-core-functions.php:663
628
+ msgid "Day(s)"
629
+ msgstr "Día(s)"
630
+
631
+ #: inc/lp-core-functions.php:664
632
+ msgid "Week(s)"
633
+ msgstr "Semana(s)"
634
+
635
+ #: inc/lp-core-functions.php:724 inc/lp-template-functions.php:698
636
+ #: inc/admin/class-lp-profile.php:77 inc/admin/lp-admin-functions.php:299
637
+ #: inc/admin/settings/class-lp-settings-courses.php:9
638
+ #: inc/admin/sub-menus/statistics.php:50 inc/admin/sub-menus/statistics.php:56
639
+ #: inc/custom-post-types/course.php:451 inc/custom-post-types/course.php:453
640
+ msgid "Courses"
641
+ msgstr "Cursos"
642
+
643
+ #: inc/lp-core-functions.php:730 inc/custom-post-types/course.php:1301
644
+ msgid "Categories"
645
+ msgstr "Categorías"
646
+
647
+ #: inc/lp-core-functions.php:735 inc/custom-post-types/course.php:244
648
+ msgid "Tags"
649
+ msgstr "Etiquetas"
650
+
651
+ #: inc/lp-core-functions.php:903
652
+ msgid "Left"
653
+ msgstr "Izquierdo"
654
+
655
+ #: inc/lp-core-functions.php:904
656
+ msgid "Right"
657
+ msgstr "Derecha"
658
+
659
+ #: inc/lp-core-functions.php:905
660
+ msgid "Left with space"
661
+ msgstr "Izquierda con espacio"
662
+
663
+ #: inc/lp-core-functions.php:906
664
+ msgid "Right with space"
665
+ msgstr "Derecho con el espacio"
666
+
667
+ #: inc/lp-core-functions.php:1174
668
+ msgid "week(s)"
669
+ msgstr "semana(s)"
670
+
671
+ #: inc/lp-core-functions.php:1178
672
+ msgid "day(s)"
673
+ msgstr "día(s)"
674
+
675
+ #: inc/lp-core-functions.php:1183
676
+ msgid "hour(s)"
677
+ msgstr "hora(s)"
678
+
679
+ #: inc/lp-core-functions.php:1187
680
+ msgid "min(s)"
681
+ msgstr "min(s)"
682
+
683
+ #: inc/lp-core-functions.php:1275
684
+ msgid "Please enter your name"
685
+ msgstr "Por favor, dinos tu nombre:"
686
+
687
+ #: inc/lp-core-functions.php:1280
688
+ msgid "Please enter your email address"
689
+ msgstr "Por favor, introduce un correo electrónico."
690
+
691
+ #: inc/lp-core-functions.php:1287
692
+ msgid "Please moderate"
693
+ msgstr "Por favor, moderado"
694
+
695
+ #: inc/lp-core-functions.php:1288
696
+ #, php-format
697
+ msgid "The user <a href=\"%s\">%s</a> wants to be a teacher."
698
+ msgstr "El usuario <a href=\"%s\">%s</a> quiere ser un maestro."
699
+
700
+ #: inc/lp-core-functions.php:1290
701
+ #, php-format
702
+ msgid "Name: %s"
703
+ msgstr "Nombre: %s"
704
+
705
+ #: inc/lp-core-functions.php:1291
706
+ #, php-format
707
+ msgid "Email: %s"
708
+ msgstr ""
709
+
710
+ #: inc/lp-core-functions.php:1292
711
+ #, php-format
712
+ msgid "Phone: %s"
713
+ msgstr "Teléfono: %s"
714
+
715
+ #: inc/lp-core-functions.php:1293
716
+ #, php-format
717
+ msgid "Accept: %s"
718
+ msgstr "Aceptar: %s"
719
+
720
+ #: inc/lp-core-functions.php:1858 inc/admin/class-lp-admin.php:113
721
+ msgid "OK"
722
+ msgstr ""
723
+
724
+ #: inc/lp-core-functions.php:1860 inc/admin/class-lp-admin.php:115
725
+ #: inc/custom-post-types/quiz.php:222 inc/custom-post-types/quiz.php:233
726
+ msgid "Yes"
727
+ msgstr "Si"
728
+
729
+ #: inc/lp-core-functions.php:1861 inc/admin/class-lp-admin.php:116
730
+ #: inc/custom-post-types/quiz.php:178 inc/custom-post-types/quiz.php:221
731
+ #: inc/custom-post-types/quiz.php:232
732
+ msgid "No"
733
+ msgstr "No"
734
+
735
+ #: inc/lp-core-functions.php:2178
736
+ msgid "Learning"
737
+ msgstr "Aprendizaje"
738
+
739
+ #: inc/lp-core-functions.php:2179 inc/custom-post-types/order.php:305
740
+ msgid "Purchased"
741
+ msgstr "Compardo"
742
+
743
+ #: inc/lp-core-functions.php:2180 inc/lp-core-functions.php:2709
744
+ msgid "Finished"
745
+ msgstr "Terminado"
746
+
747
+ #: inc/lp-core-functions.php:2181
748
+ msgid "Own"
749
+ msgstr "Propio"
750
+
751
+ #: inc/lp-core-functions.php:2286
752
+ #, php-format
753
+ msgid "Congrats! You've enrolled course \"%s\"."
754
+ msgstr "Felicidades! Te has inscrito en el curso \"%s\"."
755
+
756
+ #: inc/lp-core-functions.php:2319
757
+ msgid "Cart"
758
+ msgstr "Carrito"
759
+
760
+ #: inc/lp-core-functions.php:2323
761
+ msgid "Enable cart"
762
+ msgstr "Habilitar carrito"
763
+
764
+ #: inc/lp-core-functions.php:2324
765
+ msgid "Check this option to enable user purchase multiple courses at one time."
766
+ msgstr ""
767
+ "Compruebe esta opción para activar el usuario puede comprar cursos múltiples "
768
+ "al mismo tiempo"
769
+
770
+ #: inc/lp-core-functions.php:2330
771
+ msgid "Add to cart redirect"
772
+ msgstr "Añadir a redireccion de carrito"
773
+
774
+ #: inc/lp-core-functions.php:2331
775
+ msgid "Redirect to checkout immediately after adding course to cart."
776
+ msgstr "Redirigir a pedir inmediatamente después de añadir a la cesta"
777
+
778
+ #: inc/lp-core-functions.php:2337
779
+ msgid "AJAX add to cart"
780
+ msgstr ""
781
+
782
+ #: inc/lp-core-functions.php:2338
783
+ msgid "Using AJAX to add course to cart."
784
+ msgstr ""
785
+
786
+ #: inc/lp-core-functions.php:2344
787
+ msgid "Cart page"
788
+ msgstr "Página del Carrito"
789
+
790
+ #: inc/lp-core-functions.php:2469
791
+ msgid "Are you sure you want to cancel order?"
792
+ msgstr "¿Deseas cancelar la orden?"
793
+
794
+ #: inc/lp-core-functions.php:2470
795
+ msgid "Cancel Order"
796
+ msgstr "Cancelar Pedido"
797
+
798
+ #: inc/lp-core-functions.php:2492
799
+ #, php-format
800
+ msgid "Order number <strong>%s</strong> not found"
801
+ msgstr "Número de pedido<strong>%s</strong> no encontrado"
802
+
803
+ #: inc/lp-core-functions.php:2495
804
+ msgid "Order cancelled by customer"
805
+ msgstr "Pedido cancelado por el cliente."
806
+
807
+ #: inc/lp-core-functions.php:2498
808
+ #, php-format
809
+ msgid "Order number <strong>%s</strong> has been cancelled"
810
+ msgstr "Pedido número <strong>%s</strong> ha sido cancelado"
811
+
812
+ #: inc/lp-core-functions.php:2501
813
+ #, php-format
814
+ msgid "Order number <strong>%s</strong> can not cancelled"
815
+ msgstr "Pedido número <strong>%s</strong> no se ha cancelado"
816
+
817
+ #: inc/lp-core-functions.php:2549
818
+ msgid "Profile Page"
819
+ msgstr "Pagina de perfil"
820
+
821
+ #: inc/lp-core-functions.php:2555
822
+ msgid "Checkout Page"
823
+ msgstr "Página del pago"
824
+
825
+ #: inc/lp-core-functions.php:2580
826
+ msgid "Hidden"
827
+ msgstr "Oculto"
828
+
829
+ #: inc/lp-core-functions.php:2583
830
+ msgid "Go to setup "
831
+ msgstr "Ir a la página Configuración "
832
+
833
+ #: inc/lp-core-functions.php:2595
834
+ msgid "LP Setup Page"
835
+ msgstr ""
836
+
837
+ #: inc/lp-core-functions.php:2598
838
+ msgid "Warning! You need setup all pages"
839
+ msgstr "¡Advertencia! Es necesario configurar todas las páginas"
840
+
841
+ #: inc/lp-core-functions.php:2708
842
+ msgid "In Progress"
843
+ msgstr "En progreso"
844
+
845
+ #: inc/lp-js-template.php:11
846
+ msgid "--Select a Lesson--"
847
+ msgstr "-- Selecciona una Lección --"
848
+
849
+ #: inc/lp-template-functions.php:171
850
+ msgctxt "breadcrumb"
851
+ msgid "Home"
852
+ msgstr "Inicio"
853
+
854
+ #: inc/lp-template-functions.php:709 inc/admin/sub-menus/statistics.php:51
855
+ #: inc/admin/sub-menus/statistics.php:57 inc/custom-post-types/order.php:412
856
+ #: inc/custom-post-types/order.php:413 inc/custom-post-types/order.php:417
857
+ msgid "Orders"
858
+ msgstr "Compras"
859
+
860
+ #: inc/lp-template-functions.php:717
861
+ #: inc/admin/views/meta-boxes/order/actions.php:77
862
+ #: inc/admin/views/meta-boxes/question/header.php:12
863
+ #: inc/admin/views/meta-boxes/quiz/question.php:30
864
+ #: inc/custom-post-types/lesson.php:211 inc/custom-post-types/question.php:277
865
+ #: inc/custom-post-types/quiz.php:347 inc/question/abstract-lp-question.php:652
866
+ msgid "Edit"
867
+ msgstr "Editar"
868
+
869
+ #: inc/lp-template-functions.php:1061
870
+ #: inc/admin/settings/class-lp-settings-checkout.php:76
871
+ msgid "Order received"
872
+ msgstr "Pedido recibido"
873
+
874
+ #: inc/lp-template-functions.php:1077
875
+ #, php-format
876
+ msgid "Access denied \"%s\""
877
+ msgstr "Acceso negado \"%s\""
878
+
879
+ #: inc/lp-template-functions.php:1127
880
+ #, php-format
881
+ msgid "Search Results: &ldquo;%s&rdquo;"
882
+ msgstr "Resultados para: &ldquo;%s&rdquo;"
883
+
884
+ #: inc/lp-template-functions.php:1130
885
+ #, php-format
886
+ msgid "&nbsp;&ndash; Page %s"
887
+ msgstr "&nbsp;&ndash; Página %s"
888
+
889
+ #: inc/lp-template-functions.php:1389
890
+ msgid "Final"
891
+ msgstr ""
892
+
893
+ #: inc/lp-template-functions.php:1398 inc/custom-post-types/abstract.php:456
894
+ #: inc/custom-post-types/lesson.php:178
895
+ #: inc/libraries/meta-box/inc/fields/oembed.php:70
896
+ #: templates/single-course/section/item-meta.php:23
897
+ msgid "Preview"
898
+ msgstr "Vista previa"
899
+
900
+ #: inc/lp-template-functions.php:1470
901
+ msgid "Overview"
902
+ msgstr "Resumen"
903
+
904
+ #: inc/lp-template-functions.php:1478
905
+ #: inc/admin/views/meta-boxes/course/curriculum.php:8
906
+ #: inc/custom-post-types/course.php:531
907
+ msgid "Curriculum"
908
+ msgstr "Plan estudios"
909
+
910
+ #: inc/lp-template-functions.php:1488 inc/admin/lp-admin-functions.php:568
911
+ #: inc/admin/views/statistics/courses.php:8
912
+ #: inc/admin/views/statistics/orders.php:8
913
+ #: inc/admin/views/statistics/users.php:8
914
+ #: inc/admin/views/statistics/users.php:44
915
+ #: inc/custom-post-types/course.php:1291 inc/custom-post-types/course.php:1297
916
+ msgid "Students"
917
+ msgstr "Alumnos"
918
+
919
+ #: inc/lp-webhooks.php:78
920
+ msgid "LearnPress webhook process Complete"
921
+ msgstr ""
922
+
923
+ #: inc/admin/class-lp-admin-ajax.php:204
924
+ msgid "There are no available lessons for this course, please use "
925
+ msgstr "No hay lecciones en este curso "
926
+
927
+ #: inc/admin/class-lp-admin-ajax.php:205 inc/admin/class-lp-admin-ajax.php:209
928
+ #: inc/admin/class-lp-admin-ajax.php:213
929
+ msgid "Adding New Item."
930
+ msgstr "Añadiendo nuevo elemento."
931
+
932
+ #: inc/admin/class-lp-admin-ajax.php:208
933
+ msgid "There are no available quizzes for this course, please use "
934
+ msgstr "No hay pruebas disponibles para este curso "
935
+
936
+ #: inc/admin/class-lp-admin-ajax.php:212
937
+ msgid "There are no available questions for this quiz, please use "
938
+ msgstr "No hay preguntas disponibles para este cuestionario "
939
+
940
+ #: inc/admin/class-lp-admin-ajax.php:258 inc/admin/class-lp-admin-ajax.php:367
941
+ #: inc/admin/lp-admin-functions.php:1143 inc/quiz/class-lp-quiz-factory.php:118
942
+ #: inc/quiz/class-lp-quiz-factory.php:127
943
+ #: inc/quiz/class-lp-quiz-factory.php:162
944
+ #: inc/quiz/class-lp-quiz-factory.php:174
945
+ #: inc/quiz/class-lp-quiz-factory.php:356
946
+ msgid "Error"
947
+ msgstr ""
948
+
949
+ #: inc/admin/class-lp-admin-ajax.php:326 inc/admin/class-lp-admin-ajax.php:436
950
+ msgid "Untitled"
951
+ msgstr ""
952
+
953
+ #: inc/admin/class-lp-admin-ajax.php:343
954
+ msgid "No item found"
955
+ msgstr "Ningún producto encontrado"
956
+
957
+ #: inc/admin/class-lp-admin-ajax.php:351
958
+ msgid "A "
959
+ msgstr ""
960
+
961
+ #: inc/admin/class-lp-admin-ajax.php:351
962
+ msgid " is just used for only one "
963
+ msgstr " sólo se utiliza para una sola "
964
+
965
+ #: inc/admin/class-lp-admin-ajax.php:396
966
+ msgid "You have no permission to access this section."
967
+ msgstr "No tienes permiso para acceder a esta sección"
968
+
969
+ #: inc/admin/class-lp-admin-ajax.php:453 inc/custom-post-types/question.php:104
970
+ msgid "No questions found"
971
+ msgstr "No se encontraron preguntas"
972
+
973
+ #: inc/admin/class-lp-admin-ajax.php:479 inc/admin/class-lp-admin-ajax.php:524
974
+ msgid "Permission denied"
975
+ msgstr "Permiso denegado"
976
+
977
+ #: inc/admin/class-lp-admin-ajax.php:485
978
+ msgid "Check nonce failed"
979
+ msgstr "Comprobar que no haya fallado"
980
+
981
+ #: inc/admin/class-lp-admin-ajax.php:491 inc/admin/class-lp-admin-ajax.php:536
982
+ msgid "Order invalid"
983
+ msgstr "Pedido inválido"
984
+
985
+ #: inc/admin/class-lp-admin-ajax.php:498
986
+ msgid "Course invalid"
987
+ msgstr "Curso inválido"
988
+
989
+ #: inc/admin/class-lp-admin-ajax.php:604
990
+ msgid "Verify nonce failed"
991
+ msgstr "No se ha podido verificar"
992
+
993
+ #: inc/admin/class-lp-admin-ajax.php:747 inc/admin/class-lp-admin-ajax.php:972
994
+ #: inc/admin/lp-admin-functions.php:132
995
+ msgid "Edit Page"
996
+ msgstr "Editar Pagina"
997
+
998
+ #: inc/admin/class-lp-admin-ajax.php:748 inc/admin/class-lp-admin-ajax.php:973
999
+ #: inc/admin/lp-admin-functions.php:133
1000
+ msgid "View Page"
1001
+ msgstr "Ver Página"
1002
+
1003
+ #: inc/admin/class-lp-admin-ajax.php:750
1004
+ msgid "Error! Create page failed. Please try again!"
1005
+ msgstr "¡Error! Crear página falló. Por favor, inténtelo de nuevo!"
1006
+
1007
+ #: inc/admin/class-lp-admin-ajax.php:753
1008
+ msgid "Empty page name!"
1009
+ msgstr "Nombre de la página vacía!"
1010
+
1011
+ #: inc/admin/class-lp-admin-ajax.php:837
1012
+ msgid ""
1013
+ "Something went wrong! Please try again or ask <a href=\"https://wordpress."
1014
+ "org/support/\">support forums</a>."
1015
+ msgstr ""
1016
+ "¡Algo salió mal! Por favor, inténtelo de nuevo o pedir a <a href=\"https://"
1017
+ "wordpress.org/support/\">los foros de soporte</a> ."
1018
+
1019
+ #: inc/admin/class-lp-admin-ajax.php:850
1020
+ msgid "Try again!"
1021
+ msgstr "Inténtalo de nuevo!"
1022
+
1023
+ #: inc/admin/class-lp-admin-ajax.php:876
1024
+ msgid "Import sample data successes."
1025
+ msgstr "Importación exitosa de datos de ejemplo."
1026
+
1027
+ #: inc/admin/class-lp-admin-ajax.php:876
1028
+ msgid "View courses"
1029
+ msgstr "Ver cursos"
1030
+
1031
+ #: inc/admin/class-lp-admin-ajax.php:880
1032
+ msgid "Import sample data failed. Please try again!."
1033
+ msgstr ""
1034
+ "No se pudo importar los datos de la muestra. Por favor, inténtelo de nuevo."
1035
+
1036
+ #: inc/admin/class-lp-admin-ajax.php:884
1037
+ msgid ""
1038
+ "Unknown error when installing/activating Import/Export addon. Please try "
1039
+ "again!"
1040
+ msgstr ""
1041
+ "Error desconocido durante la instalación/activación de importación/"
1042
+ "exportación complemento. Por favor, inténtelo de nuevo!"
1043
+
1044
+ #: inc/admin/class-lp-admin-ajax.php:900 inc/admin/class-lp-admin-ajax.php:921
1045
+ #: inc/admin/class-lp-admin-ajax.php:941
1046
+ msgid ""
1047
+ "You do not have sufficient permissions to deactivate plugins for this site."
1048
+ msgstr "No tienes permisos suficientes para actualizar plugins en este sitio."
1049
+
1050
+ #: inc/admin/class-lp-admin-ajax.php:1079
1051
+ msgid " course has duplicated"
1052
+ msgstr " curso se ha duplicado"
1053
+
1054
+ #: inc/admin/class-lp-admin-menu.php:50
1055
+ msgid "Learning Management System"
1056
+ msgstr "Sistema de Administración de Aprendizaje"
1057
+
1058
+ #: inc/admin/class-lp-admin-menu.php:51 inc/admin/lp-admin-functions.php:1513
1059
+ msgid "LearnPress"
1060
+ msgstr "LearnPress adsdasd"
1061
+
1062
+ #: inc/admin/class-lp-admin-menu.php:62 inc/admin/class-lp-admin-menu.php:63
1063
+ msgid "Statistics"
1064
+ msgstr "Estadísticas"
1065
+
1066
+ #: inc/admin/class-lp-admin-menu.php:78 inc/admin/class-lp-admin-menu.php:79
1067
+ #: inc/custom-post-types/question.php:148
1068
+ msgid "Settings"
1069
+ msgstr "Ajustes"
1070
+
1071
+ #: inc/admin/class-lp-admin-menu.php:86 inc/admin/class-lp-admin-menu.php:87
1072
+ msgid "Tools"
1073
+ msgstr "Herramientas"
1074
+
1075
+ #: inc/admin/class-lp-admin.php:28
1076
+ #, php-format
1077
+ msgid ""
1078
+ "LearnPress requires permalink option <strong>Post name</strong> is enabled. "
1079
+ "Please enable it <a href=\"%s\">here</a> to ensure that all functions work "
1080
+ "properly."
1081
+ msgstr ""
1082
+
1083
+ #: inc/admin/class-lp-admin.php:63
1084
+ #, php-format
1085
+ msgid ""
1086
+ "If you like <strong>LearnPress</strong> please leave us a %s&#9733;&#9733;"
1087
+ "&#9733;&#9733;&#9733;%s rating. A huge thanks in advance!"
1088
+ msgstr ""
1089
+
1090
+ #: inc/admin/class-lp-admin.php:63
1091
+ msgid "Thanks :)"
1092
+ msgstr "Gracias :)"
1093
+
1094
+ #: inc/admin/class-lp-plugin-install-list-table.php:162
1095
+ msgid "No plugin found."
1096
+ msgstr ""
1097
+
1098
+ #: inc/admin/class-lp-plugin-install-list-table.php:296
1099
+ msgctxt "Plugin installer group title"
1100
+ msgid "Performance"
1101
+ msgstr "Gestión"
1102
+
1103
+ #: inc/admin/class-lp-plugin-install-list-table.php:297
1104
+ msgctxt "Plugin installer group title"
1105
+ msgid "Social"
1106
+ msgstr ""
1107
+
1108
+ #: inc/admin/class-lp-plugin-install-list-table.php:298
1109
+ msgctxt "Plugin installer group title"
1110
+ msgid "Tools"
1111
+ msgstr "Herramientas"
1112
+
1113
+ #: inc/admin/class-lp-plugin-install-list-table.php:341
1114
+ #: templates/loop/course/instructor.php:18
1115
+ #, php-format
1116
+ msgid "By %s"
1117
+ msgstr "Por %s"
1118
+
1119
+ #: inc/admin/class-lp-plugin-install-list-table.php:362
1120
+ msgid "Install and Active"
1121
+ msgstr "Instalar y Activar"
1122
+
1123
+ #: inc/admin/class-lp-plugin-install-list-table.php:376
1124
+ msgctxt "plugin"
1125
+ msgid "Enabled"
1126
+ msgstr "Habilitado"
1127
+
1128
+ #: inc/admin/class-lp-plugin-install-list-table.php:378
1129
+ msgctxt "plugin"
1130
+ msgid "Enable"
1131
+ msgstr "Activar"
1132
+
1133
+ #: inc/admin/class-lp-plugin-install-list-table.php:425
1134
+ msgid "Not Install"
1135
+ msgstr "No Instalado"
1136
+
1137
+ #: inc/admin/class-lp-profile.php:49
1138
+ msgid "LearnPress Profile"
1139
+ msgstr "Perfil"
1140
+
1141
+ #: inc/admin/class-lp-profile.php:72
1142
+ msgid "User Information"
1143
+ msgstr "Información del Usuario"
1144
+
1145
+ #: inc/admin/class-lp-profile.php:132
1146
+ msgid "<span class=\"course-status passed\">Passed</span>"
1147
+ msgstr "<span class=\"course-status passed\">Pasado</span>"
1148
+
1149
+ #: inc/admin/class-lp-upgrader.php:12
1150
+ msgid "Invalid Data provided."
1151
+ msgstr "Datos no válidos."
1152
+
1153
+ #: inc/admin/class-lp-upgrader.php:13
1154
+ msgid "Could not access filesystem."
1155
+ msgstr "No se ha podido acceder al sistema de archivos."
1156
+
1157
+ #: inc/admin/class-lp-upgrader.php:14
1158
+ msgid "Filesystem error."
1159
+ msgstr "Error del sistema de archivos."
1160
+
1161
+ #: inc/admin/class-lp-upgrader.php:15
1162
+ msgid "Unable to locate WordPress Root directory."
1163
+ msgstr ""
1164
+
1165
+ #: inc/admin/class-lp-upgrader.php:16
1166
+ msgid "Unable to locate WordPress Content directory (wp-content)."
1167
+ msgstr ""
1168
+
1169
+ #: inc/admin/class-lp-upgrader.php:17
1170
+ msgid "Unable to locate WordPress Plugin directory."
1171
+ msgstr ""
1172
+
1173
+ #: inc/admin/class-lp-upgrader.php:18
1174
+ msgid "Unable to locate WordPress Theme directory."
1175
+ msgstr ""
1176
+
1177
+ #: inc/admin/class-lp-upgrader.php:20
1178
+ #, php-format
1179
+ msgid "Unable to locate needed folder (%s)."
1180
+ msgstr ""
1181
+
1182
+ #: inc/admin/class-lp-upgrader.php:22
1183
+ msgid "Download failed."
1184
+ msgstr "Error en la descarga!"
1185
+
1186
+ #: inc/admin/class-lp-upgrader.php:23
1187
+ msgid "Installing the latest version&#8230;"
1188
+ msgstr ""
1189
+
1190
+ #: inc/admin/class-lp-upgrader.php:24
1191
+ msgid "The package contains no files."
1192
+ msgstr ""
1193
+
1194
+ #: inc/admin/class-lp-upgrader.php:25
1195
+ msgid "Destination folder already exists."
1196
+ msgstr ""
1197
+
1198
+ #: inc/admin/class-lp-upgrader.php:26
1199
+ msgid "Could not create directory."
1200
+ msgstr "No se puede crear el directorio."
1201
+
1202
+ #: inc/admin/class-lp-upgrader.php:27
1203
+ msgid "The package could not be installed."
1204
+ msgstr ""
1205
+
1206
+ #: inc/admin/class-lp-upgrader.php:29
1207
+ msgid "Enabling Maintenance mode&#8230;"
1208
+ msgstr ""
1209
+
1210
+ #: inc/admin/class-lp-upgrader.php:30
1211
+ msgid "Disabling Maintenance mode&#8230;"
1212
+ msgstr ""
1213
+
1214
+ #: inc/admin/lp-admin-actions.php:51
1215
+ #: inc/admin/dashboard-statistics/class-lp-statistic-plugin.php:50
1216
+ msgid "Published"
1217
+ msgstr "Publicado"
1218
+
1219
+ #: inc/admin/lp-admin-actions.php:52
1220
+ msgid "Private"
1221
+ msgstr "Privado"
1222
+
1223
+ #: inc/admin/lp-admin-actions.php:53
1224
+ msgid "Pending Review"
1225
+ msgstr "Pendiente de revisión"
1226
+
1227
+ #: inc/admin/lp-admin-actions.php:54
1228
+ msgid "Scheduled"
1229
+ msgstr "Programado"
1230
+
1231
+ #: inc/admin/lp-admin-actions.php:55
1232
+ msgid "Draft"
1233
+ msgstr "Plantilla"
1234
+
1235
+ #: inc/admin/lp-admin-actions.php:56
1236
+ msgid "Trash"
1237
+ msgstr "Papelera"
1238
+
1239
+ #: inc/admin/lp-admin-actions.php:132
1240
+ msgid "LearnPress Plugin"
1241
+ msgstr "Plugin"
1242
+
1243
+ #: inc/admin/lp-admin-actions.php:133
1244
+ msgid "LearnPress Status"
1245
+ msgstr "Estado"
1246
+
1247
+ #: inc/admin/lp-admin-functions.php:79
1248
+ msgid "[ Add a new page ]"
1249
+ msgstr "[ Añadir nuevo página ]"
1250
+
1251
+ #: inc/admin/lp-admin-functions.php:94
1252
+ msgid "Select Page"
1253
+ msgstr "Seleccionar página"
1254
+
1255
+ #: inc/admin/lp-admin-functions.php:113
1256
+ msgid "Select a page&hellip;"
1257
+ msgstr "Selecciona una página&hellip;"
1258
+
1259
+ #: inc/admin/lp-admin-functions.php:125
1260
+ msgid "Create"
1261
+ msgstr "Crear"
1262
+
1263
+ #: inc/admin/lp-admin-functions.php:127
1264
+ msgid "New page title"
1265
+ msgstr "Nuevo título de página"
1266
+
1267
+ #: inc/admin/lp-admin-functions.php:128
1268
+ msgid "Ok [Enter]"
1269
+ msgstr ""
1270
+
1271
+ #: inc/admin/lp-admin-functions.php:129
1272
+ #: inc/admin/views/meta-boxes/course/js-template.php:5
1273
+ #: inc/admin/views/meta-boxes/course/js-template.php:13
1274
+ #: inc/custom-post-types/question.php:224 inc/custom-post-types/quiz.php:291
1275
+ msgid "Cancel [ESC]"
1276
+ msgstr "Cancelar [ESC]"
1277
+
1278
+ #: inc/admin/lp-admin-functions.php:205
1279
+ msgid "Minutes"
1280
+ msgstr "Minutos"
1281
+
1282
+ #: inc/admin/lp-admin-functions.php:247
1283
+ msgid "Plain text"
1284
+ msgstr "Sólo Texto"
1285
+
1286
+ #: inc/admin/lp-admin-functions.php:248
1287
+ msgid "HTML"
1288
+ msgstr ""
1289
+
1290
+ #: inc/admin/lp-admin-functions.php:271
1291
+ msgid "Quiz is not available"
1292
+ msgstr "Examen no disponible"
1293
+
1294
+ #: inc/admin/lp-admin-functions.php:272
1295
+ msgid "Lesson is not available"
1296
+ msgstr "Lección no está disponible"
1297
+
1298
+ #: inc/admin/lp-admin-functions.php:274
1299
+ msgid "Duplicate course"
1300
+ msgstr "Duplicar curso"
1301
+
1302
+ #: inc/admin/lp-admin-functions.php:275
1303
+ msgid "Duplicate course curriculum?"
1304
+ msgstr "Duplicar programa del curso?"
1305
+
1306
+ #: inc/admin/lp-admin-functions.php:278
1307
+ msgid "Duplicate Question"
1308
+ msgstr "Duplicar preguntas"
1309
+
1310
+ #: inc/admin/lp-admin-functions.php:279
1311
+ msgid "Do you want to duplicate this question?"
1312
+ msgstr "Deseas duplicar esta pregunta?"
1313
+
1314
+ #: inc/admin/lp-admin-functions.php:281
1315
+ msgid "Do you want to remove this question from quiz?"
1316
+ msgstr "Quieres eliminar esta pregunta del cuestionario?"
1317
+
1318
+ #: inc/admin/lp-admin-functions.php:298
1319
+ #: inc/admin/settings/class-lp-settings-checkout.php:36
1320
+ #: inc/admin/settings/class-lp-settings-courses.php:18
1321
+ #: inc/admin/settings/class-lp-settings-general.php:16
1322
+ msgid "General"
1323
+ msgstr ""
1324
+
1325
+ #: inc/admin/lp-admin-functions.php:300
1326
+ #: inc/admin/settings/class-lp-settings-pages.php:9
1327
+ msgid "Pages"
1328
+ msgstr "Páginas"
1329
+
1330
+ #: inc/admin/lp-admin-functions.php:301
1331
+ #: inc/admin/settings/class-lp-settings-payments.php:21
1332
+ msgid "Payments"
1333
+ msgstr "Pagos"
1334
+
1335
+ #: inc/admin/lp-admin-functions.php:302
1336
+ #: inc/admin/settings/class-lp-settings-checkout.php:22
1337
+ #: templates/cart/form.php:106
1338
+ msgid "Checkout"
1339
+ msgstr "Pago"
1340
+
1341
+ #: inc/admin/lp-admin-functions.php:304
1342
+ #: inc/admin/settings/class-lp-settings-emails.php:25
1343
+ msgid "Emails"
1344
+ msgstr ""
1345
+
1346
+ #: inc/admin/lp-admin-functions.php:563
1347
+ #: inc/admin/views/statistics/courses.php:9
1348
+ #: inc/admin/views/statistics/orders.php:9
1349
+ #: inc/admin/views/statistics/users.php:9
1350
+ #: inc/admin/views/statistics/users.php:43
1351
+ msgid "Instructors"
1352
+ msgstr "Profesores"
1353
+
1354
+ #: inc/admin/lp-admin-functions.php:728
1355
+ #: inc/admin/views/meta-boxes/course/review-logs.php:25
1356
+ msgid "Publish"
1357
+ msgstr "Publicado"
1358
+
1359
+ #: inc/admin/lp-admin-functions.php:733 inc/admin/lp-admin-functions.php:935
1360
+ #: inc/admin/views/statistics/courses.php:44
1361
+ #: inc/admin/views/statistics/orders.php:64
1362
+ #: inc/order/lp-order-functions.php:649
1363
+ msgid "Pending"
1364
+ msgstr "Pendiente"
1365
+
1366
+ #: inc/admin/lp-admin-functions.php:738
1367
+ #: inc/admin/views/statistics/courses.php:45
1368
+ msgid "Paid"
1369
+ msgstr "Pagada"
1370
+
1371
+ #: inc/admin/lp-admin-functions.php:743
1372
+ #: inc/admin/views/statistics/courses.php:46
1373
+ #: inc/course/abstract-lp-course.php:563 inc/custom-post-types/course.php:1349
1374
+ #: inc/order/lp-order-functions.php:511
1375
+ #: inc/shortcodes/featured-courses/templates/cards.php:61
1376
+ #: inc/shortcodes/featured-courses/templates/grids.php:69
1377
+ #: inc/shortcodes/featured-courses/templates/list.php:73
1378
+ #: inc/shortcodes/popular-courses/templates/cards.php:61
1379
+ #: inc/shortcodes/popular-courses/templates/grids.php:69
1380
+ #: inc/shortcodes/popular-courses/templates/list.php:73
1381
+ #: inc/shortcodes/recent-courses/templates/cards.php:61
1382
+ #: inc/shortcodes/recent-courses/templates/grids.php:69
1383
+ #: inc/shortcodes/recent-courses/templates/list.php:72
1384
+ msgid "Free"
1385
+ msgstr "Gratis"
1386
+
1387
+ #: inc/admin/lp-admin-functions.php:961
1388
+ msgid "Pending Courses / Publish Courses"
1389
+ msgstr "Cursos pendientes / publicar cursos"
1390
+
1391
+ #: inc/admin/lp-admin-functions.php:961
1392
+ msgid "Free Courses / Priced Courses"
1393
+ msgstr "Cursos gratuitos / Cursos de pago"
1394
+
1395
+ #: inc/admin/lp-admin-functions.php:1068
1396
+ msgid "Duplicate this course"
1397
+ msgstr "Duplicar este curso"
1398
+
1399
+ #: inc/admin/lp-admin-functions.php:1079
1400
+ #: inc/admin/views/settings/fields/course-permalink.php:31
1401
+ #: inc/admin/views/statistics/orders.php:47
1402
+ #: inc/custom-post-types/lesson.php:172 inc/custom-post-types/quiz.php:316
1403
+ #: templates/cart/form.php:29 templates/checkout/review-order.php:26
1404
+ #: templates/emails/order-items-table.php:19
1405
+ #: templates/order/order-details.php:17
1406
+ msgid "Course"
1407
+ msgstr "Curso"
1408
+
1409
+ #: inc/admin/lp-admin-functions.php:1088
1410
+ msgid "Duplicate this quiz"
1411
+ msgstr "Duplicar esta prueba"
1412
+
1413
+ #: inc/admin/lp-admin-functions.php:1093
1414
+ msgid "Duplicate this question"
1415
+ msgstr "Duplicar esta pregunta"
1416
+
1417
+ #: inc/admin/lp-admin-functions.php:1098
1418
+ msgid "Duplicate this lesson"
1419
+ msgstr "Duplicar la lección"
1420
+
1421
+ #: inc/admin/lp-admin-functions.php:1150
1422
+ msgid "Oops! The course does not exist."
1423
+ msgstr "Ups! El curso no existe."
1424
+
1425
+ #: inc/admin/lp-admin-functions.php:1154
1426
+ msgid "Sorry! You have not permission to duplicate this course."
1427
+ msgstr "¡Lo siento! No tienes permiso para acceder a este curso."
1428
+
1429
+ #: inc/admin/lp-admin-functions.php:1183 inc/admin/lp-admin-functions.php:1743
1430
+ msgid "<p>Sorry! Duplicate course failed!</p>"
1431
+ msgstr "<p>Lo sentimos! Error al duplicar el curso!</p>"
1432
+
1433
+ #: inc/admin/lp-admin-functions.php:1244
1434
+ msgid "<p>Course duplicated.</p>"
1435
+ msgstr "<p>Curso duplicado.</p>"
1436
+
1437
+ #: inc/admin/lp-admin-functions.php:1268
1438
+ msgid "Sorry! Duplicate question failed!"
1439
+ msgstr "¡Lo siento! pregunta duplicada!"
1440
+
1441
+ #: inc/admin/lp-admin-functions.php:1269
1442
+ msgid "Question duplicated."
1443
+ msgstr "Pregunta duplicado."
1444
+
1445
+ #: inc/admin/lp-admin-functions.php:1273
1446
+ msgid "Sorry! Duplicate lesson failed!"
1447
+ msgstr "¡Lo siento! lección duplicada!"
1448
+
1449
+ #: inc/admin/lp-admin-functions.php:1274
1450
+ msgid "Lesson duplicated."
1451
+ msgstr "Lección duplicada."
1452
+
1453
+ #: inc/admin/lp-admin-functions.php:1278
1454
+ msgid "Sorry! Duplicate quiz failed!"
1455
+ msgstr "¡Lo siento! examen duplicado no!"
1456
+
1457
+ #: inc/admin/lp-admin-functions.php:1279
1458
+ msgid "Quiz duplicated."
1459
+ msgstr "Examen duplicado."
1460
+
1461
+ #: inc/admin/lp-admin-functions.php:1372
1462
+ #, php-format
1463
+ msgid "The user %s has become a teacher"
1464
+ msgstr "El usuario %s se ha convertido en un instructor"
1465
+
1466
+ #: inc/admin/lp-admin-functions.php:1428
1467
+ msgid "You haven't got any courses yet! Would you like to import sample data?"
1468
+ msgstr "No tienes ningún curso publicado todavía!"
1469
+
1470
+ #: inc/admin/lp-admin-functions.php:1429
1471
+ msgid "If yes, it requires to install addon name"
1472
+ msgstr "En caso afirmativo, se requiere que se instale el nombre del addon"
1473
+
1474
+ #: inc/admin/lp-admin-functions.php:1430
1475
+ msgid "LearnPress Import/Export"
1476
+ msgstr ""
1477
+
1478
+ #: inc/admin/lp-admin-functions.php:1431
1479
+ msgid "but don't worry because it is completely automated."
1480
+ msgstr "pero no se preocupe, ya que es completamente automatizado."
1481
+
1482
+ #: inc/admin/lp-admin-functions.php:1432
1483
+ msgid "Import now"
1484
+ msgstr "Importar ahora"
1485
+
1486
+ #: inc/admin/lp-admin-functions.php:1433
1487
+ msgid "No, thanks!"
1488
+ msgstr "No, gracias!"
1489
+
1490
+ #: inc/admin/lp-admin-functions.php:1734
1491
+ msgid "<p>Op! The course does not exist</p>"
1492
+ msgstr "<p> Op! El curso no existe </p>"
1493
+
1494
+ #: inc/admin/lp-admin-functions.php:1738
1495
+ msgid "<p>Sorry! You have not permission to duplicate this course</p>"
1496
+ msgstr "<p> ¡Lo siento! No tienes permisos para duplicar este curso </p>"
1497
+
1498
+ #: inc/admin/lp-admin-functions.php:1785
1499
+ #, php-format
1500
+ msgid "Question id %s is not exists."
1501
+ msgstr "Cuestionario id %s no es existe."
1502
+
1503
+ #: inc/admin/lp-admin-functions.php:1788
1504
+ #, php-format
1505
+ msgid "Quiz id %s is not exists."
1506
+ msgstr "Examen id %s no es existe."
1507
+
1508
+ #: inc/admin/dashboard-statistics/class-lp-statistic-plugin.php:21
1509
+ msgid "No results found"
1510
+ msgstr "Sin resultados"
1511
+
1512
+ #: inc/admin/dashboard-statistics/class-lp-statistic-plugin.php:34
1513
+ msgid "Downloaded"
1514
+ msgstr "Descargado"
1515
+
1516
+ #: inc/admin/dashboard-statistics/class-lp-statistic-plugin.php:35
1517
+ msgid "Active Installed"
1518
+ msgstr "Instalado"
1519
+
1520
+ #: inc/admin/dashboard-statistics/class-lp-statistic-plugin.php:53
1521
+ msgid "Updated"
1522
+ msgstr "Actualizado"
1523
+
1524
+ #: inc/admin/dashboard-statistics/class-lp-statistic-plugin.php:56
1525
+ msgid "Current Version"
1526
+ msgstr "Versión actual"
1527
+
1528
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:25
1529
+ msgid "Total Raised"
1530
+ msgstr "TOTAL"
1531
+
1532
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:32
1533
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:41
1534
+ #, php-format
1535
+ msgid "%d order"
1536
+ msgid_plural "%d orders"
1537
+ msgstr[0] "Pedido %d"
1538
+ msgstr[1] "Pedidos %d"
1539
+
1540
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:47
1541
+ msgid "Featured: "
1542
+ msgstr "Destacado: "
1543
+
1544
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:52
1545
+ msgid "Created by: "
1546
+ msgstr "Creado por: "
1547
+
1548
+ #: inc/admin/meta-boxes/class-curriculum-field.php:24
1549
+ msgid "Do you want to remove this lesson permanently?"
1550
+ msgstr "Deseas eliminar esta lección de forma permanente?"
1551
+
1552
+ #: inc/admin/meta-boxes/class-curriculum-field.php:25
1553
+ msgid "Do you want to remove this quiz permanently?"
1554
+ msgstr "Deseas eliminar este exámen de forma permanente?"
1555
+
1556
+ #: inc/admin/meta-boxes/class-curriculum-field.php:26
1557
+ msgid "Do you want to remove this section permanently?"
1558
+ msgstr "Deseas eliminar esta lección de forma permanente?"
1559
+
1560
+ #: inc/admin/meta-boxes/class-curriculum-field.php:27
1561
+ msgid "New quiz added"
1562
+ msgstr "Nuevo exámen añadido"
1563
+
1564
+ #: inc/admin/meta-boxes/class-curriculum-field.php:28
1565
+ msgid "New lesson added"
1566
+ msgstr "Nueva lección añadida"
1567
+
1568
+ #: inc/admin/meta-boxes/class-curriculum-field.php:29
1569
+ msgid "New section added"
1570
+ msgstr "Nueva sección añadida"
1571
+
1572
+ #: inc/admin/meta-boxes/class-curriculum-field.php:30
1573
+ msgid "The lesson removed"
1574
+ msgstr "La lección fue retirada"
1575
+
1576
+ #: inc/admin/meta-boxes/class-curriculum-field.php:31
1577
+ msgid "The quiz removed"
1578
+ msgstr "Cuesionario eliminado"
1579
+
1580
+ #: inc/admin/meta-boxes/class-curriculum-field.php:32
1581
+ msgid "The section removed"
1582
+ msgstr "Sección removida"
1583
+
1584
+ #: inc/admin/meta-boxes/class-curriculum-field.php:33
1585
+ msgid "The ordering completed"
1586
+ msgstr "La orden completada"
1587
+
1588
+ #: inc/admin/meta-boxes/class-curriculum-field.php:34
1589
+ msgid "Lesson added to section completed!"
1590
+ msgstr "Lección añadido a la sección completado!"
1591
+
1592
+ #: inc/admin/meta-boxes/class-curriculum-field.php:35
1593
+ msgid "Quiz added to section completed!"
1594
+ msgstr "Examen añadido a la sección completado!"
1595
+
1596
+ #: inc/admin/meta-boxes/class-curriculum-field.php:36
1597
+ #, php-format
1598
+ msgid "%s updated"
1599
+ msgstr "%s actualizados."
1600
+
1601
+ #: inc/admin/meta-boxes/class-curriculum-field.php:37
1602
+ msgid "Click to quick edit name"
1603
+ msgstr "Haz clic para editar nombre"
1604
+
1605
+ #: inc/admin/meta-boxes/class-curriculum-field.php:38
1606
+ msgid "Save Course"
1607
+ msgstr "Guardar curso"
1608
+
1609
+ #: inc/admin/meta-boxes/class-curriculum-field.php:39
1610
+ #: inc/admin/views/meta-boxes/course/review-log.php:31
1611
+ msgid "Submit for Review"
1612
+ msgstr "Enviar para revisión"
1613
+
1614
+ #: inc/admin/meta-boxes/class-curriculum-field.php:152
1615
+ msgid "Add Lesson"
1616
+ msgstr "Añadir Lección"
1617
+
1618
+ #: inc/admin/meta-boxes/class-curriculum-field.php:157
1619
+ msgid "Add Quiz"
1620
+ msgstr "Añadir Examen"
1621
+
1622
+ #: inc/admin/meta-boxes/class-curriculum-field.php:170
1623
+ msgid "Using final quiz"
1624
+ msgstr "Cuestionario final"
1625
+
1626
+ #: inc/admin/meta-boxes/class-curriculum-field.php:175
1627
+ msgid "User must be complete the final quiz to finish a section."
1628
+ msgstr "Usuario debe completar el cuestionario final para terminar una sección"
1629
+
1630
+ #: inc/admin/meta-boxes/class-curriculum-field.php:259
1631
+ msgid "The course is empty"
1632
+ msgstr "El curso está vacío"
1633
+
1634
+ #: inc/admin/meta-boxes/class-curriculum-field.php:293
1635
+ msgid "Success"
1636
+ msgstr "Correcto"
1637
+
1638
+ #: inc/admin/meta-boxes/class-quiz-questions-field.php:86
1639
+ msgid "Can not create a question"
1640
+ msgstr "No se puede crear una pregunta"
1641
+
1642
+ #: inc/admin/pointers/pointers.php:66 inc/custom-post-types/course.php:536
1643
+ #: templates/single-course/curriculum.php:16
1644
+ msgid "Course Curriculum"
1645
+ msgstr "Temario del Curso"
1646
+
1647
+ #: inc/admin/pointers/pointers.php:67
1648
+ msgid ""
1649
+ "Build a course by selecting created lessons and quizzes or adding new ones. "
1650
+ "Sorting, editing, shortcuts (l and q), it never gets easier with LP."
1651
+ msgstr ""
1652
+ "Crear un curso seleccionando lecciones y exámenes o añadiendo nuevos. "
1653
+ "Ordenar, editar, atajos (l y q)"
1654
+
1655
+ #: inc/admin/settings/class-lp-settings-checkout.php:52
1656
+ msgid "No checkout Free course"
1657
+ msgstr "Los cursos gratis no se procesan como pago"
1658
+
1659
+ #: inc/admin/settings/class-lp-settings-checkout.php:53
1660
+ msgid ""
1661
+ "Check this option to allow user to enroll course immediately without adding "
1662
+ "to cart."
1663
+ msgstr ""
1664
+ "Marca esta opción para permitir al usuario inscribirme en el curso "
1665
+ "inmediatamente sin necesidad de añadir a la cesta."
1666
+
1667
+ #: inc/admin/settings/class-lp-settings-checkout.php:59
1668
+ msgid "Disable auto enroll"
1669
+ msgstr "Desactivar Auto Cortar"
1670
+
1671
+ #: inc/admin/settings/class-lp-settings-checkout.php:60
1672
+ msgid "Disable auto enroll a user after they buy a course."
1673
+ msgstr "Desactivar auto inscribir un usuario después de que compren un curso."
1674
+
1675
+ #: inc/admin/settings/class-lp-settings-checkout.php:66
1676
+ msgid "Checkout page"
1677
+ msgstr "Página de pago"
1678
+
1679
+ #: inc/admin/settings/class-lp-settings-checkout.php:72
1680
+ msgid "Checkout Endpoints"
1681
+ msgstr "Finalizar pedido"
1682
+
1683
+ #: inc/admin/settings/class-lp-settings-courses.php:32
1684
+ #: inc/custom-post-types/course.php:464
1685
+ msgctxt "slug"
1686
+ msgid "courses"
1687
+ msgstr "cursos"
1688
+
1689
+ #: inc/admin/settings/class-lp-settings-courses.php:45
1690
+ #: inc/admin/views/settings/fields/course-permalink.php:14
1691
+ msgctxt "default-slug"
1692
+ msgid "courses"
1693
+ msgstr "cursos"
1694
+
1695
+ #: inc/admin/settings/class-lp-settings-courses.php:64
1696
+ msgid "Courses Page"
1697
+ msgstr "Página de Cursos"
1698
+
1699
+ #: inc/admin/settings/class-lp-settings-courses.php:70
1700
+ msgid "Course category base"
1701
+ msgstr "Categoría base de curso"
1702
+
1703
+ #: inc/admin/settings/class-lp-settings-courses.php:76
1704
+ msgid "Course tag base"
1705
+ msgstr "Etiqueta de Curso base"
1706
+
1707
+ #: inc/admin/settings/class-lp-settings-courses.php:82
1708
+ msgid "Review course before publish"
1709
+ msgstr "Revisar curso antes de publicar"
1710
+
1711
+ #: inc/admin/settings/class-lp-settings-courses.php:83
1712
+ msgid "The course needs to be reviewed by admin before it can be published."
1713
+ msgstr ""
1714
+ "El curso tiene que ser revisado por el administrador antes de ser publicados."
1715
+
1716
+ #: inc/admin/settings/class-lp-settings-courses.php:89
1717
+ msgid "Enable edit published course"
1718
+ msgstr "Activar la edición de un curso publicado"
1719
+
1720
+ #: inc/admin/settings/class-lp-settings-courses.php:90
1721
+ msgid ""
1722
+ "Allow instructors to edit the course that are published without review.<br /"
1723
+ "> If this option is disabled, the course status will be changed to Pending "
1724
+ "Review when the instructor update course."
1725
+ msgstr ""
1726
+ "Permitir a los instructores para editar el curso que se publican sin "
1727
+ "revisión. <br /> Si esta opción está desactivada, el estado del curso será "
1728
+ "cambiado a Pendiente de revisión cuando el instructor Curso de actualización."
1729
+
1730
+ #: inc/admin/settings/class-lp-settings-courses.php:96
1731
+ msgid "Hide list of question in quiz"
1732
+ msgstr "No hay dudas en esta prueba"
1733
+
1734
+ #: inc/admin/settings/class-lp-settings-courses.php:97
1735
+ msgid ""
1736
+ "Hide list of question in quiz<br /> If this option is enabled, the course "
1737
+ "status will be changed to Pending Review when the instructor update course"
1738
+ msgstr ""
1739
+ "Ocultar lista de preguntas en el cuestionario<br>Si esta opción está "
1740
+ "activada, el status del curso cambiará a pendiente cuando el instructor "
1741
+ "actualice el curso"
1742
+
1743
+ #: inc/admin/settings/class-lp-settings-courses.php:103
1744
+ msgid "Archive"
1745
+ msgstr "Archivos"
1746
+
1747
+ #: inc/admin/settings/class-lp-settings-courses.php:107
1748
+ #: inc/admin/settings/class-lp-settings-pages.php:80
1749
+ msgid "Courses limit"
1750
+ msgstr "cursos límite"
1751
+
1752
+ #: inc/admin/settings/class-lp-settings-courses.php:108
1753
+ msgid "Number of courses displayed per page."
1754
+ msgstr "Número de cursos por página."
1755
+
1756
+ #: inc/admin/settings/class-lp-settings-courses.php:117
1757
+ #: inc/admin/settings/class-lp-settings-courses.php:127
1758
+ #: inc/admin/settings/class-lp-settings-general.php:95
1759
+ msgid "Course thumbnail"
1760
+ msgstr "Miniatura del Curso"
1761
+
1762
+ #: inc/admin/settings/class-lp-settings-courses.php:121
1763
+ msgid "Single course"
1764
+ msgstr "Curso único"
1765
+
1766
+ #: inc/admin/settings/class-lp-settings-courses.php:133
1767
+ #: inc/admin/settings/class-lp-settings-courses.php:137
1768
+ msgid "Single course permalink"
1769
+ msgstr "Enlace permanente del curso único"
1770
+
1771
+ #: inc/admin/settings/class-lp-settings-emails.php:39
1772
+ msgid "General options"
1773
+ msgstr "Opciones generales"
1774
+
1775
+ #: inc/admin/settings/class-lp-settings-emails.php:154
1776
+ #: inc/admin/settings/class-lp-settings-profile.php:37
1777
+ msgid "Profile page"
1778
+ msgstr "Pagina de perfil"
1779
+
1780
+ #: inc/admin/settings/class-lp-settings-general.php:32
1781
+ msgid "Instructors registration"
1782
+ msgstr "Registro de instructores"
1783
+
1784
+ #: inc/admin/settings/class-lp-settings-general.php:33
1785
+ msgid "Create option for instructors registration."
1786
+ msgstr "Crear opción para el registro de instructores."
1787
+
1788
+ #: inc/admin/settings/class-lp-settings-general.php:39
1789
+ msgid "Auto update post name"
1790
+ msgstr "Actualización automática del nombre de la publicación"
1791
+
1792
+ #: inc/admin/settings/class-lp-settings-general.php:40
1793
+ msgid ""
1794
+ "The post's name will update along with the title when changes title of "
1795
+ "lesson or quiz in course curriculum or question in quiz<br />The permalink "
1796
+ "also is changed, therefore uncheck this if you don't want to change the "
1797
+ "permalink"
1798
+ msgstr ""
1799
+ "El nombre de la publicación se actualizará con el título cuando el título de "
1800
+ "la lección o cuestionario cambie en las lecciones o en la pregunta del "
1801
+ "cuestionario<br />El permalink también cambiará, así que de-seleccione esta "
1802
+ "opción si no quiere que cambie el permalink"
1803
+
1804
+ #: inc/admin/settings/class-lp-settings-general.php:46
1805
+ msgid "Currency"
1806
+ msgstr "Moneda"
1807
+
1808
+ #: inc/admin/settings/class-lp-settings-general.php:53
1809
+ msgid "Currency position"
1810
+ msgstr "Moneda posición"
1811
+
1812
+ #: inc/admin/settings/class-lp-settings-general.php:60
1813
+ msgid "Thousands Separator"
1814
+ msgstr ""
1815
+
1816
+ #: inc/admin/settings/class-lp-settings-general.php:67
1817
+ msgid "Decimals Separator"
1818
+ msgstr ""
1819
+
1820
+ #: inc/admin/settings/class-lp-settings-general.php:74
1821
+ msgid "Number of Decimals"
1822
+ msgstr ""
1823
+
1824
+ #: inc/admin/settings/class-lp-settings-general.php:81
1825
+ msgid "Load css"
1826
+ msgstr ""
1827
+
1828
+ #: inc/admin/settings/class-lp-settings-general.php:85
1829
+ msgid "Load default stylesheet for LearnPress"
1830
+ msgstr "Cargar hoja de estilo por defecto para LearnPress"
1831
+
1832
+ #: inc/admin/settings/class-lp-settings-general.php:88
1833
+ msgid "Debug mode"
1834
+ msgstr ""
1835
+
1836
+ #: inc/admin/settings/class-lp-settings-general.php:92
1837
+ msgid "Turn on/off debug mode for developer"
1838
+ msgstr ""
1839
+
1840
+ #: inc/admin/settings/class-lp-settings-general.php:99
1841
+ msgid "Turn on/off courses extra thumbnail"
1842
+ msgstr ""
1843
+
1844
+ #: inc/admin/settings/class-lp-settings-pages.php:18
1845
+ #: inc/admin/settings/class-lp-settings-pages.php:49
1846
+ #: inc/admin/settings/class-lp-settings-profile.php:22
1847
+ msgid "Profile"
1848
+ msgstr "Perfil"
1849
+
1850
+ #: inc/admin/settings/class-lp-settings-pages.php:26
1851
+ #: inc/admin/settings/class-lp-settings-pages.php:157
1852
+ msgid "Become a teacher"
1853
+ msgstr "Registrarse para convertirse en un Mentor"
1854
+
1855
+ #: inc/admin/settings/class-lp-settings-pages.php:35
1856
+ msgid "Nicename"
1857
+ msgstr "Usuario"
1858
+
1859
+ #: inc/admin/settings/class-lp-settings-pages.php:36
1860
+ msgid "First name"
1861
+ msgstr "Nombre"
1862
+
1863
+ #: inc/admin/settings/class-lp-settings-pages.php:37
1864
+ msgid "Last name"
1865
+ msgstr "Apellido"
1866
+
1867
+ #: inc/admin/settings/class-lp-settings-pages.php:38
1868
+ #: templates/profile/tabs/edit.php:105
1869
+ msgid "Nickname"
1870
+ msgstr "Apodo"
1871
+
1872
+ #: inc/admin/settings/class-lp-settings-pages.php:39
1873
+ msgid "First name + Last name"
1874
+ msgstr "Nombre + Apellido"
1875
+
1876
+ #: inc/admin/settings/class-lp-settings-pages.php:40
1877
+ msgid "Last name + First name"
1878
+ msgstr "Nombre y apellidos"
1879
+
1880
+ #: inc/admin/settings/class-lp-settings-pages.php:56
1881
+ msgid "Add link to admin bar"
1882
+ msgstr "Añadir enlace a la barra de administración"
1883
+
1884
+ #: inc/admin/settings/class-lp-settings-pages.php:62
1885
+ msgid "Text link"
1886
+ msgstr ""
1887
+
1888
+ #: inc/admin/settings/class-lp-settings-pages.php:66
1889
+ msgid "Default: View Course Profile"
1890
+ msgstr "Por defecto: Ver Perfil del Curso"
1891
+
1892
+ #: inc/admin/settings/class-lp-settings-pages.php:70
1893
+ msgid "Target link"
1894
+ msgstr ""
1895
+
1896
+ #: inc/admin/settings/class-lp-settings-pages.php:75
1897
+ msgid "Self"
1898
+ msgstr "Identidad Propia"
1899
+
1900
+ #: inc/admin/settings/class-lp-settings-pages.php:76
1901
+ msgid "New window"
1902
+ msgstr "Ventana nueva"
1903
+
1904
+ #: inc/admin/settings/class-lp-settings-pages.php:97
1905
+ #: inc/admin/settings/class-lp-settings-pages.php:144
1906
+ msgid "Endpoints"
1907
+ msgstr "puntos externos"
1908
+
1909
+ #: inc/admin/settings/class-lp-settings-pages.php:101
1910
+ msgid "Tab Courses"
1911
+ msgstr "Pestaña Cursos"
1912
+
1913
+ #: inc/admin/settings/class-lp-settings-pages.php:106
1914
+ #: inc/admin/settings/class-lp-settings-pages.php:114
1915
+ #: inc/admin/settings/class-lp-settings-pages.php:122
1916
+ #: inc/admin/settings/class-lp-settings-pages.php:130
1917
+ #: inc/admin/settings/class-lp-settings-pages.php:153
1918
+ msgid "This is a slug and should be unique."
1919
+ msgstr "Este es un slug y debe ser unico."
1920
+
1921
+ #: inc/admin/settings/class-lp-settings-pages.php:106
1922
+ #: inc/admin/settings/class-lp-settings-pages.php:114
1923
+ #: inc/admin/settings/class-lp-settings-pages.php:122
1924
+ #: inc/admin/settings/class-lp-settings-pages.php:130
1925
+ #: inc/admin/settings/class-lp-settings-pages.php:153
1926
+ msgid "Example link is"
1927
+ msgstr "El enlace de ejemplo es"
1928
+
1929
+ #: inc/admin/settings/class-lp-settings-pages.php:109
1930
+ msgid "Tab Quizzes"
1931
+ msgstr "Pestaña de cuestionarios"
1932
+
1933
+ #: inc/admin/settings/class-lp-settings-pages.php:117
1934
+ msgid "Tab Orders"
1935
+ msgstr "Pestaña de compras"
1936
+
1937
+ #: inc/admin/settings/class-lp-settings-pages.php:125
1938
+ msgid "View order"
1939
+ msgstr "Ver pedido"
1940
+
1941
+ #: inc/admin/settings/class-lp-settings-pages.php:133
1942
+ msgid "Profile picture"
1943
+ msgstr "Imagen de perfil"
1944
+
1945
+ #: inc/admin/settings/class-lp-settings-pages.php:137
1946
+ msgid "Thumbnail size"
1947
+ msgstr ""
1948
+
1949
+ #: inc/admin/settings/class-lp-settings-pages.php:148
1950
+ msgid "Results"
1951
+ msgstr "Resultados"
1952
+
1953
+ #: inc/admin/sub-menus/addons.php:23
1954
+ msgid "LearnPress Add-ons"
1955
+ msgstr ""
1956
+
1957
+ #: inc/admin/sub-menus/addons.php:24
1958
+ msgid "Features add-ons that you can add or remove depending on your needs."
1959
+ msgstr ""
1960
+ "Características complementos que se pueden agregar o quitar dependiendo de "
1961
+ "sus necesidades."
1962
+
1963
+ #: inc/admin/sub-menus/addons.php:60
1964
+ msgid "Search..."
1965
+ msgstr "Buscar..."
1966
+
1967
+ #: inc/admin/sub-menus/settings.php:32
1968
+ msgid "LearnPress settings updated."
1969
+ msgstr "LearnPress configuración actualizados."
1970
+
1971
+ #: inc/admin/sub-menus/settings.php:38
1972
+ msgid "Settings changed. Updating..."
1973
+ msgstr "Configuración cambiada. Actualizando..."
1974
+
1975
+ #: inc/admin/sub-menus/settings.php:41
1976
+ msgid "Settings updated. Redirecting..."
1977
+ msgstr "Configuración actualizada. Redirigiendo ..."
1978
+
1979
+ #: inc/admin/sub-menus/settings.php:56
1980
+ msgid "Save settings"
1981
+ msgstr "Guardar ajustes"
1982
+
1983
+ #: inc/admin/sub-menus/settings.php:102
1984
+ msgid "Settings saved"
1985
+ msgstr "Configuraciones guardadas"
1986
+
1987
+ #: inc/admin/sub-menus/statistics.php:55
1988
+ msgid "Users"
1989
+ msgstr "Usuarios"
1990
+
1991
+ #: inc/admin/sub-menus/tools.php:31
1992
+ msgid "Sorry, you are nto allowed to access this page."
1993
+ msgstr "Lo siento, no tienes permiso para acceder a esta página."
1994
+
1995
+ #: inc/admin/sub-menus/tools.php:132
1996
+ msgid "All courses, lessons, quizzes and questions have been removed"
1997
+ msgstr "Todos los cursos, clases, pruebas y preguntas se han eliminado"
1998
+
1999
+ #: inc/admin/sub-menus/tools.php:198
2000
+ msgid "Outdated data from version less than 1.0 have been removed"
2001
+ msgstr "datos obsoletos de la versión inferior a 1,0 se han retirado"
2002
+
2003
+ #: inc/admin/sub-menus/tools.php:208
2004
+ msgid "Database"
2005
+ msgstr ""
2006
+
2007
+ #: inc/admin/sub-menus/tools.php:209
2008
+ msgid "Templates"
2009
+ msgstr ""
2010
+
2011
+ #: inc/admin/sub-menus/tools.php:217
2012
+ msgid "Upgrade courses"
2013
+ msgstr "Actualizar cursos"
2014
+
2015
+ #: inc/admin/sub-menus/tools.php:218
2016
+ msgid ""
2017
+ "Upgrade courses, lessons, quizzes and questions from version less than 1.0."
2018
+ msgstr ""
2019
+
2020
+ #: inc/admin/sub-menus/tools.php:220
2021
+ msgid ""
2022
+ "Use this action to force system to upgrade outdated data to latest version."
2023
+ msgstr ""
2024
+ "Utilice esta acción para forzar el sistema para actualizar datos obsoletos a "
2025
+ "la última versión."
2026
+
2027
+ #: inc/admin/sub-menus/tools.php:223
2028
+ msgid ""
2029
+ "All courses will be upgraded whether you have done this action in the past. "
2030
+ "So please remove all courses before you upgrade to prevent duplicated "
2031
+ "courses."
2032
+ msgstr ""
2033
+ "Todos los cursos se actualizarán aun si han hecho esta acción en el pasado. "
2034
+ "Así que por favor retire todos los cursos antes de actualizar para evitar "
2035
+ "que los cursos se dupliquen."
2036
+
2037
+ #: inc/admin/sub-menus/tools.php:226
2038
+ msgid "Upgrade"
2039
+ msgstr ""
2040
+
2041
+ #: inc/admin/sub-menus/tools.php:230
2042
+ msgid "Remove current data"
2043
+ msgstr ""
2044
+
2045
+ #: inc/admin/sub-menus/tools.php:231
2046
+ msgid "Remove all courses, lessons, quizzes and questions"
2047
+ msgstr "Eliminar todos los cursos, lecciones, cuestionarios y preguntas"
2048
+
2049
+ #: inc/admin/sub-menus/tools.php:234
2050
+ msgid "Be careful before using this action!"
2051
+ msgstr ""
2052
+
2053
+ #: inc/admin/sub-menus/tools.php:238 inc/admin/sub-menus/tools.php:255
2054
+ msgid "Check this box and click this button again to confirm."
2055
+ msgstr "Marque esta casilla y haga clic en este botón de nuevo para confirmar."
2056
+
2057
+ #: inc/admin/sub-menus/tools.php:241 inc/admin/sub-menus/tools.php:258
2058
+ #: inc/admin/views/meta-boxes/course/editor.php:18
2059
+ #: inc/admin/views/meta-boxes/course/editor.php:48
2060
+ #: inc/admin/views/meta-boxes/course/loop-section.php:44
2061
+ #: inc/admin/views/meta-boxes/question/header.php:13
2062
+ #: inc/admin/views/meta-boxes/quiz/question.php:36
2063
+ #: inc/libraries/meta-box/inc/fields/file-input.php:38
2064
+ #: inc/question/abstract-lp-question.php:653 templates/cart/form.php:72
2065
+ msgid "Remove"
2066
+ msgstr ""
2067
+
2068
+ #: inc/admin/sub-menus/tools.php:247
2069
+ msgid "Remove outdated data"
2070
+ msgstr ""
2071
+
2072
+ #: inc/admin/sub-menus/tools.php:248
2073
+ msgid ""
2074
+ "Remove all courses, lessons, quizzes and questions from version less than "
2075
+ "1.0."
2076
+ msgstr ""
2077
+
2078
+ #: inc/admin/sub-menus/tools.php:251
2079
+ msgid ""
2080
+ "Be careful before using this action! Only use this action in case all "
2081
+ "outdated data has been upgraded."
2082
+ msgstr ""
2083
+
2084
+ #: inc/admin/sub-menus/tools.php:311
2085
+ #, php-format
2086
+ msgid "Override Templates (%s)"
2087
+ msgstr ""
2088
+
2089
+ #: inc/admin/sub-menus/tools.php:319
2090
+ msgid "File"
2091
+ msgstr "Archivo"
2092
+
2093
+ #: inc/admin/sub-menus/tools.php:326
2094
+ msgid "Outdated"
2095
+ msgstr "Obsoleto"
2096
+
2097
+ #: inc/admin/sub-menus/tools.php:330
2098
+ msgid "Version"
2099
+ msgstr ""
2100
+
2101
+ #: inc/admin/sub-menus/tools.php:332
2102
+ msgid "Core version"
2103
+ msgstr ""
2104
+
2105
+ #: inc/admin/sub-menus/tools.php:357
2106
+ msgid "There is no template file has overwritten"
2107
+ msgstr ""
2108
+
2109
+ #: inc/admin/sub-menus/tools.php:406
2110
+ msgid "LearnPress Tools"
2111
+ msgstr ""
2112
+
2113
+ #: inc/admin/views/admin-template.php:4
2114
+ msgid "Type here to search item"
2115
+ msgstr ""
2116
+
2117
+ #: inc/admin/views/admin-template.php:12 inc/admin/views/admin-template.php:13
2118
+ #: inc/admin/views/meta-boxes/course/editor.php:19
2119
+ msgid "Add"
2120
+ msgstr "Añadir"
2121
+
2122
+ #: inc/admin/views/admin-template.php:15 inc/admin/views/admin-template.php:19
2123
+ msgid "Add and Close"
2124
+ msgstr "Añadir y Cerrar"
2125
+
2126
+ #: inc/admin/views/admin-template.php:26 inc/admin/views/admin-template.php:45
2127
+ #: inc/admin/views/meta-boxes/course/js-template.php:76
2128
+ #: inc/admin/views/meta-boxes/course/js-template.php:109
2129
+ #: inc/admin/views/meta-boxes/order/details.php:104
2130
+ #: inc/admin/views/meta-boxes/quiz/js-template.php:43
2131
+ msgid "Close"
2132
+ msgstr "Cerrar"
2133
+
2134
+ #: inc/admin/views/admin-template.php:35
2135
+ #: inc/admin/views/meta-boxes/quiz/question.php:31
2136
+ msgid "Duplicate"
2137
+ msgstr "Duplicar"
2138
+
2139
+ #: inc/admin/views/admin-template.php:35
2140
+ msgid "course"
2141
+ msgstr "curso"
2142
+
2143
+ #: inc/admin/views/admin-template.php:38 inc/admin/views/admin-template.php:41
2144
+ msgid "Duplicating ..."
2145
+ msgstr "Duplicando ..."
2146
+
2147
+ #: inc/admin/views/admin-template.php:38
2148
+ msgid "Duplicate course's curriculum"
2149
+ msgstr "Duplicar plan de estudios del curso"
2150
+
2151
+ #: inc/admin/views/admin-template.php:39
2152
+ msgid "All Content"
2153
+ msgstr "Todo el contenido"
2154
+
2155
+ #: inc/admin/views/admin-template.php:41
2156
+ msgid "Duplicate course no curriculum"
2157
+ msgstr "Duplicar curso sin ningún plan de estudios"
2158
+
2159
+ #: inc/admin/views/admin-template.php:42
2160
+ msgid "No Content"
2161
+ msgstr "Sin contenido"
2162
+
2163
+ #: inc/admin/views/html-admin-notice-templates.php:13
2164
+ #, php-format
2165
+ msgid ""
2166
+ "Your theme <strong>(%s)</strong> contains outdated copies of some LearnPress "
2167
+ "template files."
2168
+ msgstr ""
2169
+ "Su tema <strong>(%s)</strong> contiene copias no actualizadas de algunos "
2170
+ "archivos de plantilla LearnPress."
2171
+
2172
+ #: inc/admin/views/html-admin-notice-templates.php:15
2173
+ msgid ""
2174
+ "These files may need updating to ensure they are compatible with the current "
2175
+ "version of LearnPress. You can see which files are affected from the system "
2176
+ "status page. If in doubt, check with the author of the theme."
2177
+ msgstr ""
2178
+ "Estos archivos pueden ser actualizadas para garantizar que son compatibles "
2179
+ "con la versión actual de LearnPress. Usted puede ver qué archivos se ven "
2180
+ "afectados desde la página de estado del sistema. En caso de duda, consulte "
2181
+ "con el autor del tema."
2182
+
2183
+ #: inc/admin/views/html-admin-notice-templates.php:17
2184
+ msgid "View list of outdated templates"
2185
+ msgstr "Ver lista de plantillas obsoletas"
2186
+
2187
+ #: inc/admin/views/html-admin-notice-templates.php:18
2188
+ #: inc/custom-post-types/course.php:159 inc/custom-post-types/quiz.php:159
2189
+ msgid "Hide"
2190
+ msgstr "Ocultar"
2191
+
2192
+ #: inc/admin/views/meta-boxes/course/curriculum.php:9
2193
+ msgid "Outline your course and add content with sections, lessons and quizzes."
2194
+ msgstr "Delinear tu curso y añadir contenido con secciones, clases y exámenes."
2195
+
2196
+ #: inc/admin/views/meta-boxes/course/curriculum.php:12
2197
+ #: inc/admin/views/meta-boxes/quiz/questions.php:17
2198
+ msgid "Expand All"
2199
+ msgstr "Expandir todo"
2200
+
2201
+ #: inc/admin/views/meta-boxes/course/curriculum.php:13
2202
+ #: inc/admin/views/meta-boxes/quiz/questions.php:18
2203
+ msgid "Collapse All"
2204
+ msgstr "Contraer todo"
2205
+
2206
+ #: inc/admin/views/meta-boxes/course/editor.php:7
2207
+ msgid "Add Section"
2208
+ msgstr "Añadir Sección"
2209
+
2210
+ #: inc/admin/views/meta-boxes/course/editor.php:15
2211
+ msgid "New section title"
2212
+ msgstr "Nuevo título de sección"
2213
+
2214
+ #: inc/admin/views/meta-boxes/course/editor.php:29
2215
+ msgid "New quiz name"
2216
+ msgstr "Nuevo tipo de examen"
2217
+
2218
+ #: inc/admin/views/meta-boxes/course/editor.php:30
2219
+ msgid "New lesson name"
2220
+ msgstr "Nuevo nombre lección"
2221
+
2222
+ #: inc/admin/views/meta-boxes/course/editor.php:32
2223
+ msgid "Add Content"
2224
+ msgstr "Añadir contenido"
2225
+
2226
+ #: inc/admin/views/meta-boxes/course/editor.php:33
2227
+ msgid "Add Existing Content"
2228
+ msgstr "Añadir el contenido existente"
2229
+
2230
+ #: inc/admin/views/meta-boxes/course/editor.php:45
2231
+ msgid "New item title"
2232
+ msgstr "Nuevo elemento de título"
2233
+
2234
+ #: inc/admin/views/meta-boxes/course/editor.php:49
2235
+ msgid "Quick edit"
2236
+ msgstr "Edición rápida"
2237
+
2238
+ #: inc/admin/views/meta-boxes/course/editor.php:58
2239
+ msgid "Title"
2240
+ msgstr "Título"
2241
+
2242
+ #: inc/admin/views/meta-boxes/course/editor.php:62
2243
+ #: inc/custom-post-types/course.php:1290 inc/custom-post-types/course.php:1296
2244
+ msgid "Content"
2245
+ msgstr "Contenido"
2246
+
2247
+ #: inc/admin/views/meta-boxes/course/js-template.php:6
2248
+ #: inc/admin/views/meta-boxes/course/js-template.php:14
2249
+ #: inc/custom-post-types/question.php:223 inc/custom-post-types/quiz.php:290
2250
+ msgid "Add [Enter]"
2251
+ msgstr "Añadir [Enter]"
2252
+
2253
+ #: inc/admin/views/meta-boxes/course/js-template.php:54
2254
+ msgid "Type here to search lesson"
2255
+ msgstr "Escribe aquí para buscar"
2256
+
2257
+ #: inc/admin/views/meta-boxes/course/js-template.php:55
2258
+ #: inc/admin/views/meta-boxes/course/js-template.php:88
2259
+ #: inc/admin/views/meta-boxes/course/loop-section.php:71
2260
+ #: inc/admin/views/meta-boxes/quiz/js-template.php:6
2261
+ #: inc/admin/views/meta-boxes/quiz/questions.php:36
2262
+ #: inc/custom-post-types/course.php:456 inc/custom-post-types/lesson.php:64
2263
+ #: inc/custom-post-types/order.php:419 inc/custom-post-types/question.php:100
2264
+ msgid "Add New"
2265
+ msgstr "Añadir Nuevo"
2266
+
2267
+ #: inc/admin/views/meta-boxes/course/js-template.php:73
2268
+ #: inc/admin/views/meta-boxes/course/js-template.php:106
2269
+ #: inc/admin/views/meta-boxes/order/details.php:102
2270
+ #: inc/admin/views/meta-boxes/quiz/js-template.php:40
2271
+ msgid "No results"
2272
+ msgstr "Sin resultados"
2273
+
2274
+ #: inc/admin/views/meta-boxes/course/js-template.php:75
2275
+ #: inc/admin/views/meta-boxes/course/js-template.php:108
2276
+ msgid "Add to section"
2277
+ msgstr "Añadir a sección"
2278
+
2279
+ #: inc/admin/views/meta-boxes/course/js-template.php:87
2280
+ msgid "Type here to search quiz"
2281
+ msgstr "Escribe aquí para buscar"
2282
+
2283
+ #: inc/admin/views/meta-boxes/course/loop-item.php:32
2284
+ #, php-format
2285
+ msgid "Switch to %s"
2286
+ msgstr "Cambiar a %s"
2287
+
2288
+ #: inc/admin/views/meta-boxes/course/loop-item.php:39
2289
+ msgid "Add new item here and press Enter"
2290
+ msgstr "Añadir un nuevo artículo aquí y pulse Intro"
2291
+
2292
+ #: inc/admin/views/meta-boxes/course/loop-item.php:49
2293
+ #: inc/custom-post-types/course.php:405
2294
+ msgid "Are you sure you want to remove this item?"
2295
+ msgstr "Estás seguro de que desea eliminar esto?"
2296
+
2297
+ #: inc/admin/views/meta-boxes/course/loop-section.php:33
2298
+ msgid "Enter section name and hit enter"
2299
+ msgstr "ingresa el nombre de la sección y presiona enter"
2300
+
2301
+ #: inc/admin/views/meta-boxes/course/loop-section.php:35
2302
+ #: inc/admin/views/meta-boxes/question/header.php:14
2303
+ #: inc/admin/views/meta-boxes/quiz/question.php:28
2304
+ #: inc/question/abstract-lp-question.php:654
2305
+ msgid "Expand"
2306
+ msgstr "Expandir"
2307
+
2308
+ #: inc/admin/views/meta-boxes/course/loop-section.php:36
2309
+ #: inc/admin/views/meta-boxes/question/header.php:15
2310
+ #: inc/admin/views/meta-boxes/quiz/question.php:29
2311
+ #: inc/question/abstract-lp-question.php:655
2312
+ msgid "Collapse"
2313
+ msgstr "Colapsar"
2314
+
2315
+ #: inc/admin/views/meta-boxes/course/loop-section.php:37
2316
+ msgid "Are you sure you want to remove this section?"
2317
+ msgstr "¿Está seguro que quiere eliminar esta sección?"
2318
+
2319
+ #: inc/admin/views/meta-boxes/course/loop-section.php:43
2320
+ msgid "Describe about this section"
2321
+ msgstr "Describe esta sección"
2322
+
2323
+ #: inc/admin/views/meta-boxes/course/loop-section.php:44
2324
+ msgid "Are you sure you want to remove these items from section?"
2325
+ msgstr "¿Está seguro de que desea eliminar estos artículos de la sección?"
2326
+
2327
+ #: inc/admin/views/meta-boxes/course/loop-section.php:46
2328
+ msgid "Delete Forever"
2329
+ msgstr "Borrar para siempre"
2330
+
2331
+ #: inc/admin/views/meta-boxes/course/loop-section.php:69
2332
+ msgid "Add new lesson or quiz and press Enter"
2333
+ msgstr "Añadir nueva lección o un cuestionario y pulsa Enter"
2334
+
2335
+ #: inc/admin/views/meta-boxes/course/loop-section.php:81
2336
+ #: inc/admin/views/meta-boxes/quiz/questions.php:46
2337
+ msgid "-OR-"
2338
+ msgstr "-O-"
2339
+
2340
+ #: inc/admin/views/meta-boxes/course/loop-section.php:85
2341
+ #, php-format
2342
+ msgid "Select %s"
2343
+ msgstr "Seleccionar %s"
2344
+
2345
+ #: inc/admin/views/meta-boxes/course/loop-section.php:90
2346
+ msgid "Select Quizzes"
2347
+ msgstr "Seleccionar Exámenes"
2348
+
2349
+ #: inc/admin/views/meta-boxes/course/review-log.php:25
2350
+ #: inc/custom-post-types/course.php:407
2351
+ msgid "Your course is pending for reviewing"
2352
+ msgstr "Tu curso está pendiente de revisión"
2353
+
2354
+ #: inc/admin/views/meta-boxes/course/review-log.php:27
2355
+ msgid ""
2356
+ "Your course will not be submitted for reviewing until you check 'Submit for "
2357
+ "Review'"
2358
+ msgstr ""
2359
+ "Tu curso no se someterá a la revisión hasta que marques 'Enviar a revisión'"
2360
+
2361
+ #: inc/admin/views/meta-boxes/course/review-log.php:34
2362
+ #: inc/admin/views/meta-boxes/course/review-log.php:42
2363
+ msgid "Message to Reviewer"
2364
+ msgstr "Mensaje para el Revisor"
2365
+
2366
+ #: inc/admin/views/meta-boxes/course/review-log.php:40
2367
+ msgid ""
2368
+ "Warning! Your course will become Pending Review for admins to review before "
2369
+ "it can be published when you update."
2370
+ msgstr ""
2371
+ "¡Advertencia! Tu curso se convertirá en pendiente de revisión para los "
2372
+ "administradores que revisen antes de que pueda publicarse en el momento de "
2373
+ "actualizar."
2374
+
2375
+ #: inc/admin/views/meta-boxes/course/review-log.php:48
2376
+ msgid "This course is pending for reviewing"
2377
+ msgstr "Este curso está pendiente de revisión"
2378
+
2379
+ #: inc/admin/views/meta-boxes/course/review-log.php:51
2380
+ msgid "Message to Instructor"
2381
+ msgstr "Mensaje para el instructor"
2382
+
2383
+ #: inc/admin/views/meta-boxes/course/review-logs.php:7
2384
+ #, php-format
2385
+ msgctxt "learnpress"
2386
+ msgid "%d review"
2387
+ msgid_plural "%d reviews"
2388
+ msgstr[0] "%d revisión"
2389
+ msgstr[1] "%d revisiones"
2390
+
2391
+ #: inc/admin/views/meta-boxes/course/review-logs.php:9
2392
+ msgid "This course has not got any reviews yet"
2393
+ msgstr "Este curso no tiene ninguna crítica"
2394
+
2395
+ #: inc/admin/views/meta-boxes/course/review-logs.php:25
2396
+ msgid "Rejected"
2397
+ msgstr "Rechazado"
2398
+
2399
+ #: inc/admin/views/meta-boxes/course/review-logs.php:25
2400
+ msgid "Submit for review"
2401
+ msgstr "Enviar para revisión"
2402
+
2403
+ #: inc/admin/views/meta-boxes/course/review-logs.php:31
2404
+ #: inc/libraries/meta-box/inc/fields/autocomplete.php:15
2405
+ #: inc/libraries/meta-box/inc/fields/autocomplete.php:66
2406
+ msgid "Delete"
2407
+ msgstr "Borrar"
2408
+
2409
+ #: inc/admin/views/meta-boxes/course/review-logs.php:40
2410
+ msgid "View less"
2411
+ msgstr "Ver Menos"
2412
+
2413
+ #: inc/admin/views/meta-boxes/course/review-logs.php:42
2414
+ msgid "View all"
2415
+ msgstr "Ver todo"
2416
+
2417
+ #: inc/admin/views/meta-boxes/order/actions.php:7
2418
+ msgid "M j, Y @ H:i"
2419
+ msgstr ""
2420
+
2421
+ #: inc/admin/views/meta-boxes/order/actions.php:10
2422
+ #, php-format
2423
+ msgid "Scheduled for: <b>%1$s</b>"
2424
+ msgstr ""
2425
+
2426
+ #: inc/admin/views/meta-boxes/order/actions.php:12
2427
+ #, php-format
2428
+ msgid "Order date: <b>%1$s</b>"
2429
+ msgstr "Fecha de compra: <b>%1$s</b>"
2430
+
2431
+ #: inc/admin/views/meta-boxes/order/actions.php:14
2432
+ #: inc/admin/views/meta-boxes/order/actions.php:22
2433
+ msgid "Publish <b>immediately</b>"
2434
+ msgstr "Publicar <b>inmediatamente</b>"
2435
+
2436
+ #: inc/admin/views/meta-boxes/order/actions.php:16
2437
+ #, php-format
2438
+ msgid "Schedule for: <b>%1$s</b>"
2439
+ msgstr "Programar para: <b>%1$s</b>"
2440
+
2441
+ #: inc/admin/views/meta-boxes/order/actions.php:18
2442
+ #, php-format
2443
+ msgid "Publish on: <b>%1$s</b>"
2444
+ msgstr "Publicar en: <b>%1$s</b>"
2445
+
2446
+ #: inc/admin/views/meta-boxes/order/actions.php:34
2447
+ msgid "Order status"
2448
+ msgstr "Estado del pedido"
2449
+
2450
+ #: inc/admin/views/meta-boxes/order/actions.php:54
2451
+ msgid "Customer"
2452
+ msgstr "Cliente"
2453
+
2454
+ #: inc/admin/views/meta-boxes/order/actions.php:63
2455
+ #: inc/order/class-lp-order.php:236
2456
+ msgid "[Guest]"
2457
+ msgstr "[Invitado]"
2458
+
2459
+ #: inc/admin/views/meta-boxes/order/actions.php:78
2460
+ msgid "Edit date and time"
2461
+ msgstr "Editar Fecha y hora"
2462
+
2463
+ #: inc/admin/views/meta-boxes/order/actions.php:80
2464
+ msgid "Date and time"
2465
+ msgstr "Fecha y hora"
2466
+
2467
+ #: inc/admin/views/meta-boxes/order/actions.php:91
2468
+ msgid "Delete Permanently"
2469
+ msgstr "Borrar Permanentemente"
2470
+
2471
+ #: inc/admin/views/meta-boxes/order/actions.php:93
2472
+ msgid "Move to Trash"
2473
+ msgstr "Enviar a Papelera"
2474
+
2475
+ #: inc/admin/views/meta-boxes/order/details.php:11
2476
+ #, php-format
2477
+ msgid "Order %s"
2478
+ msgstr "Pedido %s"
2479
+
2480
+ #: inc/admin/views/meta-boxes/order/details.php:14
2481
+ #, php-format
2482
+ msgid "Date %s"
2483
+ msgstr "Fecha %s"
2484
+
2485
+ #: inc/admin/views/meta-boxes/order/details.php:15
2486
+ #, php-format
2487
+ msgid "Status %s"
2488
+ msgstr "Estado %s"
2489
+
2490
+ #: inc/admin/views/meta-boxes/order/details.php:36
2491
+ #: inc/custom-post-types/order.php:378
2492
+ #, php-format
2493
+ msgid "Pay via <strong>%s</strong>"
2494
+ msgstr "Pagar con <strong>%s</strong>"
2495
+
2496
+ #: inc/admin/views/meta-boxes/order/details.php:43
2497
+ msgid "Order Items"
2498
+ msgstr "Elementos del pedido"
2499
+
2500
+ #: inc/admin/views/meta-boxes/order/details.php:48
2501
+ #: inc/gateways/paypal/class-lp-gateway-paypal.php:433
2502
+ msgid "Item"
2503
+ msgstr "Producto"
2504
+
2505
+ #: inc/admin/views/meta-boxes/order/details.php:49
2506
+ msgid "Cost"
2507
+ msgstr "Costo"
2508
+
2509
+ #: inc/admin/views/meta-boxes/order/details.php:50
2510
+ #: templates/emails/order-items-table.php:20
2511
+ msgid "Quantity"
2512
+ msgstr "Cantidad"
2513
+
2514
+ #: inc/admin/views/meta-boxes/order/details.php:51
2515
+ msgid "Amount"
2516
+ msgstr "Cantidad"
2517
+
2518
+ #: inc/admin/views/meta-boxes/order/details.php:61
2519
+ msgid "No order items"
2520
+ msgstr "No hay elementos en el pedido"
2521
+
2522
+ #: inc/admin/views/meta-boxes/order/details.php:66
2523
+ msgid "Sub Total"
2524
+ msgstr "Subtotal"
2525
+
2526
+ #: inc/admin/views/meta-boxes/order/details.php:74
2527
+ #: inc/custom-post-types/order.php:307 templates/cart/form.php:31
2528
+ #: templates/cart/form.php:100 templates/checkout/order-received.php:32
2529
+ #: templates/checkout/review-order.php:27
2530
+ #: templates/checkout/review-order.php:66 templates/order/order-details.php:18
2531
+ #: templates/order/order-details.php:54 templates/profile/tabs/orders.php:18
2532
+ msgid "Total"
2533
+ msgstr ""
2534
+
2535
+ #: inc/admin/views/meta-boxes/order/details.php:83
2536
+ msgid "Add Item"
2537
+ msgstr "Añadir elemento"
2538
+
2539
+ #: inc/admin/views/meta-boxes/order/details.php:84
2540
+ msgid "Calculate Total"
2541
+ msgstr "Calcular total"
2542
+
2543
+ #: inc/admin/views/meta-boxes/order/details.php:92
2544
+ msgid "Customer Note"
2545
+ msgstr "Nota del Comprador"
2546
+
2547
+ #: inc/admin/views/meta-boxes/order/details.php:99
2548
+ msgid "Type here to search the course"
2549
+ msgstr "Escribe aquí para buscar"
2550
+
2551
+ #: inc/admin/views/meta-boxes/question/multi-choice-options.php:18
2552
+ #: inc/admin/views/meta-boxes/question/single-choice-options.php:17
2553
+ #: inc/question/class-lp-question-multi-choice.php:119
2554
+ msgid "Answer Text"
2555
+ msgstr "Respuesta Texto."
2556
+
2557
+ #: inc/admin/views/meta-boxes/question/multi-choice-options.php:19
2558
+ #: inc/admin/views/meta-boxes/question/single-choice-options.php:18
2559
+ #: inc/question/class-lp-question-multi-choice.php:118
2560
+ msgid "Is Correct?"
2561
+ msgstr "Es correcto?"
2562
+
2563
+ #: inc/admin/views/meta-boxes/question/multi-choice-options.php:62
2564
+ #: inc/admin/views/meta-boxes/question/single-choice-options.php:64
2565
+ #, php-format
2566
+ msgid ""
2567
+ "<button class=\"button add-question-option-button add-question-option-button-"
2568
+ "%1$d\" data-id=\"%1$d\" type=\"button\">%2$s</button>"
2569
+ msgstr ""
2570
+
2571
+ #: inc/admin/views/meta-boxes/question/multi-choice-options.php:64
2572
+ #: inc/admin/views/meta-boxes/question/single-choice-options.php:66
2573
+ msgid "Add Option"
2574
+ msgstr "Agregar Opción"
2575
+
2576
+ #: inc/admin/views/meta-boxes/question/none.php:2
2577
+ msgid "Please select a type for this question"
2578
+ msgstr "Selección una pregunta"
2579
+
2580
+ #: inc/admin/views/meta-boxes/quiz/js-template.php:4
2581
+ msgid "Type here to search the questions"
2582
+ msgstr "Escribe aquí para buscar"
2583
+
2584
+ #: inc/admin/views/meta-boxes/quiz/js-template.php:27
2585
+ msgid "(Untitled)"
2586
+ msgstr "(Sin título)"
2587
+
2588
+ #: inc/admin/views/meta-boxes/quiz/js-template.php:42
2589
+ msgid "Add to quiz"
2590
+ msgstr "Añadir al cuestionario"
2591
+
2592
+ #: inc/admin/views/meta-boxes/quiz/question.php:14
2593
+ msgid "Load question failed!"
2594
+ msgstr "¡ Error en la carga de pregunta!"
2595
+
2596
+ #: inc/admin/views/meta-boxes/quiz/question.php:35
2597
+ msgid "Are you sure you want to remove this question?"
2598
+ msgstr "Estás seguro de que quieres eliminar esta pregunta?"
2599
+
2600
+ #: inc/admin/views/meta-boxes/quiz/questions.php:15
2601
+ #: inc/custom-post-types/question.php:97 inc/custom-post-types/quiz.php:127
2602
+ #: inc/custom-post-types/quiz.php:317
2603
+ msgid "Questions"
2604
+ msgstr "Preguntas"
2605
+
2606
+ #: inc/admin/views/meta-boxes/quiz/questions.php:34
2607
+ msgid "Add question title and press Enter"
2608
+ msgstr "Añadir título de la pregunta y pulsar ENTER"
2609
+
2610
+ #: inc/admin/views/meta-boxes/quiz/questions.php:47
2611
+ msgid "Add Existing Question"
2612
+ msgstr "Añadir Pregunta Existente"
2613
+
2614
+ #: inc/admin/views/settings/payments.php:17
2615
+ #: inc/admin/views/settings/emails/become-a-teacher.php:23
2616
+ #: inc/admin/views/settings/emails/enrolled-course.php:24
2617
+ #: inc/admin/views/settings/emails/finished-course.php:24
2618
+ #: inc/admin/views/settings/emails/new-course.php:25
2619
+ #: inc/admin/views/settings/emails/new-order-customer.php:25
2620
+ #: inc/admin/views/settings/emails/new-order.php:24
2621
+ #: inc/admin/views/settings/emails/published-course.php:21
2622
+ #: inc/admin/views/settings/emails/rejected-course.php:25
2623
+ #: inc/admin/views/settings/emails/user-order-completed.php:24
2624
+ msgid "Enable"
2625
+ msgstr "Activar"
2626
+
2627
+ #: inc/admin/views/settings/payments.php:24
2628
+ #: inc/custom-post-types/question.php:245
2629
+ msgid "Type"
2630
+ msgstr "Tipo"
2631
+
2632
+ #: inc/admin/views/settings/payments.php:27
2633
+ msgid "Basic"
2634
+ msgstr "Básico"
2635
+
2636
+ #: inc/admin/views/settings/payments.php:28
2637
+ msgid "Security"
2638
+ msgstr "Seguridad"
2639
+
2640
+ #: inc/admin/views/settings/payments.php:33
2641
+ msgid "Email Address"
2642
+ msgstr "Dirección de correo electrónico"
2643
+
2644
+ #: inc/admin/views/settings/payments.php:42
2645
+ msgid "API Username"
2646
+ msgstr "Usuario API"
2647
+
2648
+ #: inc/admin/views/settings/payments.php:49
2649
+ msgid "API Password"
2650
+ msgstr "Contraseña API"
2651
+
2652
+ #: inc/admin/views/settings/payments.php:56
2653
+ msgid "API Signature"
2654
+ msgstr "Firma API"
2655
+
2656
+ #: inc/admin/views/settings/payments.php:68
2657
+ msgid "Sandbox Mode"
2658
+ msgstr ""
2659
+
2660
+ #: inc/admin/views/settings/payments.php:76
2661
+ msgid "Sandbox Email Address"
2662
+ msgstr ""
2663
+
2664
+ #: inc/admin/views/settings/payments.php:85
2665
+ msgid "Sandbox API Username"
2666
+ msgstr ""
2667
+
2668
+ #: inc/admin/views/settings/payments.php:93
2669
+ msgid "Sandbox API Password"
2670
+ msgstr ""
2671
+
2672
+ #: inc/admin/views/settings/payments.php:101
2673
+ msgid "Sandbox API Signature"
2674
+ msgstr ""
2675
+
2676
+ #: inc/admin/views/settings/setting-field.php:96
2677
+ msgid ""
2678
+ "The settings of this image size have been disabled because its values are "
2679
+ "being overwritten by a filter."
2680
+ msgstr ""
2681
+ "Los ajustes de este tamaños de imagen se han desactivado porque sus valores "
2682
+ "los ha sobreescrito un filtro."
2683
+
2684
+ #: inc/admin/views/settings/setting-field.php:108
2685
+ msgid "Hard Crop?"
2686
+ msgstr ""
2687
+
2688
+ #: inc/admin/views/settings/emails/become-a-teacher.php:28
2689
+ msgid "Send notification to user when accept"
2690
+ msgstr "Enviar una notificación al usuario cuando acepte"
2691
+
2692
+ #: inc/admin/views/settings/emails/become-a-teacher.php:32
2693
+ #: inc/admin/views/settings/emails/enrolled-course.php:32
2694
+ #: inc/admin/views/settings/emails/finished-course.php:32
2695
+ #: inc/admin/views/settings/emails/new-course.php:46
2696
+ #: inc/admin/views/settings/emails/new-order-customer.php:33
2697
+ #: inc/admin/views/settings/emails/new-order.php:45
2698
+ #: inc/admin/views/settings/emails/published-course.php:29
2699
+ #: inc/admin/views/settings/emails/rejected-course.php:33
2700
+ #: inc/admin/views/settings/emails/user-order-completed.php:32
2701
+ msgid "Subject"
2702
+ msgstr "Asunto"
2703
+
2704
+ #: inc/admin/views/settings/emails/become-a-teacher.php:36
2705
+ msgid "Email subject"
2706
+ msgstr "Asunto del correo"
2707
+
2708
+ #: inc/admin/views/settings/emails/become-a-teacher.php:41
2709
+ #: inc/admin/views/settings/emails/enrolled-course.php:43
2710
+ #: inc/admin/views/settings/emails/finished-course.php:43
2711
+ #: inc/admin/views/settings/emails/new-course.php:57
2712
+ #: inc/admin/views/settings/emails/new-order-customer.php:45
2713
+ #: inc/admin/views/settings/emails/new-order.php:57
2714
+ #: inc/admin/views/settings/emails/published-course.php:40
2715
+ #: inc/admin/views/settings/emails/rejected-course.php:44
2716
+ #: inc/admin/views/settings/emails/user-order-completed.php:44
2717
+ msgid "Heading"
2718
+ msgstr "Encabezado"
2719
+
2720
+ #: inc/admin/views/settings/emails/become-a-teacher.php:46
2721
+ #: inc/admin/views/settings/emails/enrolled-course.php:48
2722
+ #: inc/admin/views/settings/emails/finished-course.php:48
2723
+ #: inc/admin/views/settings/emails/new-order-customer.php:51
2724
+ #: inc/admin/views/settings/emails/new-order.php:63
2725
+ #: inc/admin/views/settings/emails/published-course.php:45
2726
+ #: inc/admin/views/settings/emails/rejected-course.php:49
2727
+ #: inc/admin/views/settings/emails/user-order-completed.php:50
2728
+ #, php-format
2729
+ msgid "Email heading, default: <code>%s</code>"
2730
+ msgstr "Encabezado por default del email: <code>%s</code>"
2731
+
2732
+ #: inc/admin/views/settings/emails/email-template.php:6
2733
+ #: inc/admin/views/settings/emails/_email-template.php:3
2734
+ msgid "Email content"
2735
+ msgstr "Contenido del Email"
2736
+
2737
+ #: inc/admin/views/settings/emails/email-template.php:13
2738
+ #: inc/admin/views/settings/emails/_email-template.php:11
2739
+ msgid "HTML template"
2740
+ msgstr ""
2741
+
2742
+ #: inc/admin/views/settings/emails/email-template.php:14
2743
+ #: inc/admin/views/settings/emails/_email-template.php:12
2744
+ msgid "Plain text template"
2745
+ msgstr ""
2746
+
2747
+ #: inc/admin/views/settings/emails/email-template.php:44
2748
+ #: inc/admin/views/settings/emails/_email-template.php:28
2749
+ #, php-format
2750
+ msgid ""
2751
+ "This template has been overridden by your theme and can be found in: <code>"
2752
+ "%s</code>. Please open the file in an editor program to edit"
2753
+ msgstr ""
2754
+ "Esta plantilla se ha reemplazado por su tema y se puede encontrar en: <code>"
2755
+ "%s</code> . Por favor, abra el archivo en un programa de edición para editar"
2756
+
2757
+ #: inc/admin/views/settings/emails/email-template.php:68
2758
+ msgid "Click on variables to add it into email content"
2759
+ msgstr ""
2760
+ "Haga clic sobre las variables para agregarlo a contenido del correo "
2761
+ "electrónico"
2762
+
2763
+ #: inc/admin/views/settings/emails/email-template.php:77
2764
+ #: inc/admin/views/settings/emails/_email-template.php:70
2765
+ #, php-format
2766
+ msgid ""
2767
+ "To override and edit this email template copy <code>%s</code> to your theme "
2768
+ "folder: <code>%s</code>."
2769
+ msgstr ""
2770
+ "Para sobreescribir y editar esta plantilla de correo electrónico, copie "
2771
+ "<code>%s</code> a la carpeta de su tema: <code>%s</code>."
2772
+
2773
+ #: inc/admin/views/settings/emails/enrolled-course.php:15
2774
+ #: inc/emails/class-lp-email-enrolled-course.php:20
2775
+ #: inc/emails/class-lp-email-enrolled-course.php:26
2776
+ msgid "Enrolled course"
2777
+ msgstr "Inscrito al Curso"
2778
+
2779
+ #: inc/admin/views/settings/emails/enrolled-course.php:17
2780
+ msgid "Send this email to user when they enroll in the course."
2781
+ msgstr "Envíe este correo electrónico al usuario cuando se inscriban al curso"
2782
+
2783
+ #: inc/admin/views/settings/emails/enrolled-course.php:37
2784
+ #, php-format
2785
+ msgid "Email subject , default: <code>%s</code>"
2786
+ msgstr "Asunto del correo electrónico, por defecto: <code>%s</code>"
2787
+
2788
+ #: inc/admin/views/settings/emails/enrolled-course.php:55
2789
+ #: inc/admin/views/settings/emails/finished-course.php:54
2790
+ #: inc/admin/views/settings/emails/new-course.php:69
2791
+ #: inc/admin/views/settings/emails/new-order-customer.php:58
2792
+ #: inc/admin/views/settings/emails/new-order.php:69
2793
+ #: inc/admin/views/settings/emails/published-course.php:51
2794
+ #: inc/admin/views/settings/emails/rejected-course.php:55
2795
+ #: inc/admin/views/settings/emails/user-order-completed.php:56
2796
+ msgid "Email format"
2797
+ msgstr "Formato de Email"
2798
+
2799
+ #: inc/admin/views/settings/emails/finished-course.php:15
2800
+ #: inc/emails/class-lp-email-finished-course.php:19
2801
+ #: inc/emails/class-lp-email-finished-course.php:25
2802
+ msgid "Finished course"
2803
+ msgstr "Finalizar Curso"
2804
+
2805
+ #: inc/admin/views/settings/emails/finished-course.php:17
2806
+ msgid "Send this email to user when a user finished a course."
2807
+ msgstr ""
2808
+ "Enviar correo electrónico a este usuario cuando un usuario terminó un curso."
2809
+
2810
+ #: inc/admin/views/settings/emails/finished-course.php:37
2811
+ #: inc/admin/views/settings/emails/new-course.php:63
2812
+ #: inc/admin/views/settings/emails/new-order-customer.php:39
2813
+ #: inc/admin/views/settings/emails/new-order.php:51
2814
+ #: inc/admin/views/settings/emails/published-course.php:34
2815
+ #: inc/admin/views/settings/emails/rejected-course.php:38
2816
+ #: inc/admin/views/settings/emails/user-order-completed.php:38
2817
+ #, php-format
2818
+ msgid "Email subject, default: <code>%s</code>"
2819
+ msgstr "Asunto del correo electrónico, por defecto: <code>%s</code>"
2820
+
2821
+ #: inc/admin/views/settings/emails/general.php:15
2822
+ msgid "Email Options"
2823
+ msgstr "Opciones de Correo electrónico"
2824
+
2825
+ #: inc/admin/views/settings/emails/general.php:17
2826
+ msgid ""
2827
+ "The following options affect the sender (email address and name) used in "
2828
+ "LearnPress emails."
2829
+ msgstr ""
2830
+ "Las siguientes opciones afectan al remitente (dirección de correo "
2831
+ "electrónico y nombre) que se utiliza en los correos electrónicos usados por "
2832
+ "Learnpress."
2833
+
2834
+ #: inc/admin/views/settings/emails/general.php:23
2835
+ msgid "From Name"
2836
+ msgstr "Nombre del remitente"
2837
+
2838
+ #: inc/admin/views/settings/emails/general.php:29
2839
+ msgid "From Email"
2840
+ msgstr "Correo electrónico del remitente"
2841
+
2842
+ #: inc/admin/views/settings/emails/general.php:36
2843
+ msgid "Email Template"
2844
+ msgstr "Plantilla de Email"
2845
+
2846
+ #: inc/admin/views/settings/emails/general.php:40
2847
+ msgid "Header image"
2848
+ msgstr "Imagen de encabezado"
2849
+
2850
+ #: inc/admin/views/settings/emails/general.php:43
2851
+ msgid "The image will be displayed in the top of the email."
2852
+ msgstr "La imagen se mostrará en la parte superior del correo electrónico."
2853
+
2854
+ #: inc/admin/views/settings/emails/general.php:47
2855
+ msgid "Footer text"
2856
+ msgstr "Texto de pie de página"
2857
+
2858
+ #: inc/admin/views/settings/emails/general.php:50
2859
+ msgid "The text display in the bottom of email"
2860
+ msgstr "El texto se visualiza en la parte inferior del correo electrónico"
2861
+
2862
+ #: inc/admin/views/settings/emails/new-course.php:16
2863
+ msgid "New course for review"
2864
+ msgstr "Nuevo curso para revisar"
2865
+
2866
+ #: inc/admin/views/settings/emails/new-course.php:18
2867
+ msgid "Email settings when a new course is submitted for review."
2868
+ msgstr ""
2869
+ "Configuración de correo electrónico cuando un nuevo curso se presenta para "
2870
+ "su revisión."
2871
+
2872
+ #: inc/admin/views/settings/emails/new-course.php:33
2873
+ #: inc/admin/views/settings/emails/new-order.php:32
2874
+ msgid "Recipient(s)"
2875
+ msgstr "Destinatario(s)"
2876
+
2877
+ #: inc/admin/views/settings/emails/new-course.php:40
2878
+ #, php-format
2879
+ msgid "Email recipient(s), default: <code>%s</code>"
2880
+ msgstr "Correo electrónico del destinatario (s), por defecto: <code>%s</code>"
2881
+
2882
+ #: inc/admin/views/settings/emails/new-course.php:51
2883
+ #, php-format
2884
+ msgid "Email subject (separated by comma), default: <code>%s</code>"
2885
+ msgstr ""
2886
+ "Asunto del correo electrónico (separados por comas), por defecto: <code>%s</"
2887
+ "code>"
2888
+
2889
+ #: inc/admin/views/settings/emails/new-course.php:59
2890
+ #: inc/emails/class-lp-email-new-course.php:20
2891
+ #: inc/emails/class-lp-email-new-course.php:26
2892
+ msgid "New course"
2893
+ msgstr "Nuevo Curso"
2894
+
2895
+ #: inc/admin/views/settings/emails/new-order-customer.php:16
2896
+ #: inc/emails/class-lp-email-new-order-customer.php:21
2897
+ msgid "New order customer"
2898
+ msgstr "Cliente con nueva orden"
2899
+
2900
+ #: inc/admin/views/settings/emails/new-order-customer.php:18
2901
+ #: inc/admin/views/settings/emails/new-order.php:17
2902
+ msgid "Send email to a specific address when a new order is placed."
2903
+ msgstr ""
2904
+ "Enviar correo electrónico a la dirección específica cuando hay una nueva "
2905
+ "compra"
2906
+
2907
+ #: inc/admin/views/settings/emails/new-order.php:15
2908
+ #: inc/emails/class-lp-email-new-order.php:19
2909
+ #: inc/emails/class-lp-email-new-order.php:25
2910
+ msgid "New order"
2911
+ msgstr "Nuevo pedido"
2912
+
2913
+ #: inc/admin/views/settings/emails/new-order.php:39
2914
+ #, php-format
2915
+ msgid "Email recipient(s) (separated by comma), default: <code>%s</code>"
2916
+ msgstr ""
2917
+ "Correo electrónico del destinatario (s) (separados por comas), por defecto: "
2918
+ "<code>%s</code>"
2919
+
2920
+ #: inc/admin/views/settings/emails/rejected-course.php:18
2921
+ msgid "Settings for email when a course is rejected"
2922
+ msgstr "Ajustes de correo electrónico cuando se rechaza un curso"
2923
+
2924
+ #: inc/admin/views/settings/emails/user-order-completed.php:15
2925
+ #: inc/emails/class-lp-email-user-order-completed.php:21
2926
+ msgid "User order completed"
2927
+ msgstr "Pedido del usuario completado"
2928
+
2929
+ #: inc/admin/views/settings/emails/user-order-completed.php:17
2930
+ msgid "Send email to user when the order is completed."
2931
+ msgstr "Enviar correo electrónico a los usuarios cuando la orden se completa."
2932
+
2933
+ #: inc/admin/views/settings/emails/_email-template.php:55
2934
+ #, php-format
2935
+ msgid ""
2936
+ "This template has been overridden by your theme and can be found in: <code>"
2937
+ "%s</code>."
2938
+ msgstr ""
2939
+ "Esta plantilla ha sido sobreescrita por tu tema y puede encontrarse en: "
2940
+ "<code>%s</code>."
2941
+
2942
+ #: inc/admin/views/settings/emails/_email-template.php:60
2943
+ msgid "Delete template file"
2944
+ msgstr ""
2945
+
2946
+ #: inc/admin/views/settings/emails/_email-template.php:75
2947
+ msgid "Copy file to theme"
2948
+ msgstr ""
2949
+
2950
+ #: inc/admin/views/settings/emails/_email-template.php:81
2951
+ msgid "File was not found."
2952
+ msgstr ""
2953
+
2954
+ #: inc/admin/views/settings/fields/course-permalink.php:15
2955
+ msgctxt "default-slug"
2956
+ msgid "course"
2957
+ msgstr ""
2958
+
2959
+ #: inc/admin/views/settings/fields/course-permalink.php:26
2960
+ msgid "Default"
2961
+ msgstr "Por defecto"
2962
+
2963
+ #: inc/admin/views/settings/fields/course-permalink.php:36
2964
+ msgid "Courses base"
2965
+ msgstr "Cursos base"
2966
+
2967
+ #: inc/admin/views/settings/fields/course-permalink.php:41
2968
+ msgid "Courses base with category"
2969
+ msgstr "Cursos base con categoría"
2970
+
2971
+ #: inc/admin/views/settings/fields/course-permalink.php:75
2972
+ msgid "Custom Base"
2973
+ msgstr ""
2974
+
2975
+ #: inc/admin/views/settings/fields/course-permalink.php:81
2976
+ msgid ""
2977
+ "Enter a custom base to use. A base <strong>must</strong> be set or WordPress "
2978
+ "will use default values instead."
2979
+ msgstr ""
2980
+ "Introduce la base personalizada que se usará. <strong>Debes</strong> añadir "
2981
+ "una base o WordPress utilizará la base por defecto."
2982
+
2983
+ #: inc/admin/views/settings/fields/image-size.php:12
2984
+ msgid "px"
2985
+ msgstr ""
2986
+
2987
+ #: inc/admin/views/settings/fields/image-size.php:17
2988
+ msgid "Crop?"
2989
+ msgstr "¿Recortar?"
2990
+
2991
+ #: inc/admin/views/statistics/courses.php:18
2992
+ #: inc/admin/views/statistics/orders.php:19
2993
+ #: inc/admin/views/statistics/users.php:18
2994
+ msgid "Last 7 Days"
2995
+ msgstr "Ultimos 7 dias"
2996
+
2997
+ #: inc/admin/views/statistics/courses.php:21
2998
+ #: inc/admin/views/statistics/orders.php:22
2999
+ #: inc/admin/views/statistics/users.php:21
3000
+ msgid "Last 30 Days"
3001
+ msgstr "Últimos 30 días"
3002
+
3003
+ #: inc/admin/views/statistics/courses.php:24
3004
+ #: inc/admin/views/statistics/orders.php:25
3005
+ #: inc/admin/views/statistics/users.php:24
3006
+ msgid "Last 12 Months"
3007
+ msgstr "Últimos 12 meses."
3008
+
3009
+ #: inc/admin/views/statistics/courses.php:31
3010
+ #: inc/admin/views/statistics/orders.php:32
3011
+ #: inc/admin/views/statistics/users.php:31
3012
+ msgid "From"
3013
+ msgstr "De"
3014
+
3015
+ #: inc/admin/views/statistics/courses.php:33
3016
+ #: inc/admin/views/statistics/orders.php:34
3017
+ #: inc/admin/views/statistics/users.php:33
3018
+ msgid "To"
3019
+ msgstr "Para"
3020
+
3021
+ #: inc/admin/views/statistics/courses.php:36
3022
+ #: inc/admin/views/statistics/orders.php:37
3023
+ #: inc/admin/views/statistics/users.php:36
3024
+ msgid "Go"
3025
+ msgstr "Ir"
3026
+
3027
+ #: inc/admin/views/statistics/courses.php:43
3028
+ msgid "Public"
3029
+ msgstr "Publica"
3030
+
3031
+ #: inc/admin/views/statistics/orders.php:44
3032
+ msgid "Sale by"
3033
+ msgstr "Venta por"
3034
+
3035
+ #: inc/admin/views/statistics/orders.php:46 inc/custom-post-types/order.php:306
3036
+ #: templates/checkout/order-received.php:26
3037
+ #: templates/profile/tabs/orders.php:16
3038
+ msgid "Date"
3039
+ msgstr "Fecha"
3040
+
3041
+ #: inc/admin/views/statistics/orders.php:48
3042
+ msgid "Course Category"
3043
+ msgstr "Categoría del Curso"
3044
+
3045
+ #: inc/admin/views/statistics/orders.php:51
3046
+ msgid "Select a course"
3047
+ msgstr "Seleccionar un curso"
3048
+
3049
+ #: inc/admin/views/statistics/orders.php:55
3050
+ msgid "Select a course category"
3051
+ msgstr "Seleccionar categoría del curso"
3052
+
3053
+ #: inc/admin/views/updates/0.9/step-repair-database.php:1
3054
+ msgid "Update Database"
3055
+ msgstr ""
3056
+
3057
+ #: inc/admin/views/updates/0.9/step-repair-database.php:4
3058
+ msgid "Update custom post type"
3059
+ msgstr ""
3060
+
3061
+ #: inc/admin/views/updates/0.9/step-repair-database.php:7
3062
+ #: inc/admin/views/updates/0.9/step-repair-database.php:10
3063
+ msgid "Update post meta"
3064
+ msgstr ""
3065
+
3066
+ #: inc/admin/views/updates/0.9/step-repair-database.php:14
3067
+ msgid "Updating! Please do not close this page until the work is done"
3068
+ msgstr ""
3069
+ "Actualizando! Por favor, no cierre esta página hasta que el trabajo esté "
3070
+ "completado"
3071
+
3072
+ #: inc/admin/views/updates/0.9/step-repair-database.php:18
3073
+ msgid "Rollback"
3074
+ msgstr ""
3075
+
3076
+ #: inc/admin/views/updates/0.9/step-upgraded.php:1
3077
+ msgid "Upgrade complete successfully!"
3078
+ msgstr "Actualización completada."
3079
+
3080
+ #: inc/admin/views/updates/0.9/step-upgraded.php:2
3081
+ msgid "What's next?"
3082
+ msgstr "¿Y ahora qué?"
3083
+
3084
+ #: inc/admin/views/updates/0.9/step-upgraded.php:5
3085
+ msgid "Manage courses"
3086
+ msgstr "Administrar Cursos"
3087
+
3088
+ #: inc/admin/views/updates/0.9/step-upgraded.php:8
3089
+ msgid "Create a new course"
3090
+ msgstr "Crear nuevo curso"
3091
+
3092
+ #: inc/admin/views/updates/0.9/step-upgraded.php:11
3093
+ msgid "Setting up your LearnPress"
3094
+ msgstr ""
3095
+
3096
+ #: inc/admin/views/updates/0.9/step-upgraded.php:14
3097
+ msgid "Manage add-ons"
3098
+ msgstr ""
3099
+
3100
+ #: inc/admin/views/updates/0.9/step-upgraded.php:16
3101
+ msgid "Dashboard"
3102
+ msgstr "Panel"
3103
+
3104
+ #: inc/admin/views/updates/0.9/step-welcome.php:1
3105
+ msgid "Welcome to LearnPress!"
3106
+ msgstr "Bienvenido a Mentoría Online!"
3107
+
3108
+ #: inc/admin/views/updates/0.9/step-welcome.php:2
3109
+ msgid "Thank you for choosing LearnPress to sell your courses online!"
3110
+ msgstr "Gracias por elegir Mentoiría Online para vender sus cursos en línea!"
3111
+
3112
+ #: inc/admin/views/updates/0.9/step-welcome.php:3
3113
+ #, php-format
3114
+ msgid ""
3115
+ "In version <strong>%s</strong> of LearnPress we have a big update and need "
3116
+ "to upgrade your database to ensure system works properly."
3117
+ msgstr ""
3118
+ "En la versión <strong>%s</strong> de LearnPress tenemos una gran "
3119
+ "actualización y la necesidad de actualizar su base de datos para asegurar "
3120
+ "que el sistema funciona correctamente."
3121
+
3122
+ #: inc/admin/views/updates/0.9/step-welcome.php:4
3123
+ msgid ""
3124
+ "We are very careful in upgrading the database but be sure to backup your "
3125
+ "database before upgrading to avoid the risks may be encountered."
3126
+ msgstr ""
3127
+ "Somos muy cuidadosos en la actualización de la base de datos pero Asegúrese "
3128
+ "de salvaguardar su base de datos antes de actualizar para evitar riesgos que "
3129
+ "se puedan encontrar."
3130
+
3131
+ #: inc/admin/views/updates/0.9/step-welcome.php:5
3132
+ msgid "Click <strong>Yes, upgrade!</strong> button to start."
3133
+ msgstr "Haga clic en <strong>Sí, actualizar!</strong> Botón para comenzar."
3134
+
3135
+ #: inc/admin/views/updates/0.9/step-welcome.php:7
3136
+ msgid "No, back to Admin"
3137
+ msgstr "Ir al Administrador"
3138
+
3139
+ #: inc/admin/views/updates/0.9/step-welcome.php:8
3140
+ msgid "Yes, upgrade!"
3141
+ msgstr "Sí, actualizar!"
3142
+
3143
+ #: inc/admin/views/updates/0.9/update-wizard.php:6
3144
+ #: inc/admin/views/updates/0.9/update-wizard.php:19
3145
+ #, php-format
3146
+ msgid "LearnPress update version %s"
3147
+ msgstr "LearnPress versión de actualización %s"
3148
+
3149
+ #: inc/cart/class-lp-cart.php:120
3150
+ msgid "Get cart should not be called before the wp_loaded action."
3151
+ msgstr "Adquirir cesta no debería ser llamado antes de la acción wp_loaded"
3152
+
3153
+ #: inc/cart/class-lp-cart.php:140 inc/cart/class-lp-cart.php:190
3154
+ msgid "Sorry! This course is not purchasable."
3155
+ msgstr "¡Lo siento! Este curso no esta a la venta por ahora"
3156
+
3157
+ #: inc/cart/class-lp-cart.php:222
3158
+ msgid "Please login to continue process."
3159
+ msgstr "Por favor, inicie sesión para continuar."
3160
+
3161
+ #: inc/cart/class-lp-cart.php:242
3162
+ msgid "Cart page is not setting up."
3163
+ msgstr "No se ha configurado la página de carrito de compra"
3164
+
3165
+ #: inc/cart/class-lp-cart.php:245 templates/cart/empty-cart.php:19
3166
+ msgid "Back to class"
3167
+ msgstr "Regresar a clase"
3168
+
3169
+ #: inc/cart/class-lp-cart.php:250 inc/cart/class-lp-cart.php:260
3170
+ msgid "Checkout page is not setting up."
3171
+ msgstr "La página de cobro no esta configurado."
3172
+
3173
+ #: inc/cart/class-lp-cart.php:252
3174
+ msgid "View cart"
3175
+ msgstr "Ver mi carrito"
3176
+
3177
+ #: inc/cart/class-lp-cart.php:255
3178
+ #, php-format
3179
+ msgid "<strong>%s</strong> has been added to your cart. %s"
3180
+ msgstr "<strong>%s</strong> ha sido añadido a tu carrito %s"
3181
+
3182
+ #: inc/cart/class-lp-cart.php:544
3183
+ msgid "Checkout page is not setup"
3184
+ msgstr "Página de compra no está configurada"
3185
+
3186
+ #: inc/course/abstract-lp-course.php:449
3187
+ msgid "You enrolled"
3188
+ msgstr "Te has inscrito"
3189
+
3190
+ #: inc/course/abstract-lp-course.php:451
3191
+ #, php-format
3192
+ msgctxt ""
3193
+ msgid "You and one student enrolled"
3194
+ msgid_plural ""
3195
+ "You and <span class=\"course-students-number\">%1$s</span> students enrolled"
3196
+ msgstr[0] ""
3197
+ msgstr[1] ""
3198
+
3199
+ #: inc/course/abstract-lp-course.php:455
3200
+ #, php-format
3201
+ msgctxt ""
3202
+ msgid "One student enrolled"
3203
+ msgid_plural ""
3204
+ "<span class=\"course-students-number\">%1$s</span> students enrolled"
3205
+ msgstr[0] ""
3206
+ msgstr[1] ""
3207
+
3208
+ #: inc/course/abstract-lp-course.php:459
3209
+ msgid "No student enrolled"
3210
+ msgstr "Ningún estudiante inscrito"
3211
+
3212
+ #: inc/course/abstract-lp-course.php:838 inc/course/abstract-lp-course.php:856
3213
+ #: inc/lesson/class-lp-lesson.php:119 inc/quiz/class-lp-quiz.php:618
3214
+ #, php-format
3215
+ msgid "The function %s doesn't exists"
3216
+ msgstr "La función %s no existe"
3217
+
3218
+ #: inc/course/abstract-lp-course.php:1096
3219
+ #, php-format
3220
+ msgid "%d of %d items completed"
3221
+ msgstr "%d de %d elementos completados"
3222
+
3223
+ #: inc/course/abstract-lp-course.php:1099
3224
+ #: inc/course/abstract-lp-course.php:1101
3225
+ #, php-format
3226
+ msgid "%d%% completed"
3227
+ msgstr "%d%% finalizado"
3228
+
3229
+ #: inc/course/abstract-lp-course.php:1389
3230
+ #, php-format
3231
+ msgid "This course will end within %s next"
3232
+ msgstr "Tu acceso a este curso expirará el %s."
3233
+
3234
+ #: inc/course/class-lp-course.php:31
3235
+ #, php-format
3236
+ msgid "Are you sure you want to finish course %s?"
3237
+ msgstr ""
3238
+
3239
+ #: inc/course/class-lp-course.php:32 templates/single-course/buttons.php:65
3240
+ msgid "Finish course"
3241
+ msgstr "Finalizar curso"
3242
+
3243
+ #: inc/course/class-lp-course.php:35
3244
+ #, php-format
3245
+ msgid "Are you sure you want to retake course %s"
3246
+ msgstr ""
3247
+
3248
+ #: inc/course/class-lp-course.php:36
3249
+ msgid "Retake course"
3250
+ msgstr "Repetir curso"
3251
+
3252
+ #: inc/course/class-lp-course.php:39 inc/quiz/class-lp-quiz.php:111
3253
+ msgid "Finish quiz"
3254
+ msgstr "Finalizar Examen"
3255
+
3256
+ #: inc/course/class-lp-course.php:40 inc/quiz/class-lp-quiz.php:112
3257
+ msgid "Are you sure you want to finish this quiz?"
3258
+ msgstr "¿Estás seguro de que deseas terminar este examen?"
3259
+
3260
+ #: inc/course/class-lp-course.php:43 inc/quiz/class-lp-quiz.php:115
3261
+ msgid "Retake quiz"
3262
+ msgstr "Volver a hacer la Prueba"
3263
+
3264
+ #: inc/course/class-lp-course.php:44 inc/quiz/class-lp-quiz.php:116
3265
+ msgid "Are you sure you want to retake this quiz?"
3266
+ msgstr "¿Está seguro que quiere volver a tomar el examen?"
3267
+
3268
+ #: inc/course/class-lp-course.php:47 inc/quiz/class-lp-quiz.php:119
3269
+ msgid "Time out!"
3270
+ msgstr "¡Se acabo el tiempo!"
3271
+
3272
+ #: inc/course/class-lp-course.php:48 inc/quiz/class-lp-quiz.php:120
3273
+ msgid "The time is over! Your quiz will automate come to finish"
3274
+ msgstr "¡Se acabó el tiempo! El examen terminará de manera automática"
3275
+
3276
+ #: inc/course/class-lp-course.php:50 inc/quiz/class-lp-quiz.php:122
3277
+ msgid "Congrats! You have finished this quiz"
3278
+ msgstr "¡Felicidades! Has terminado este éxamen"
3279
+
3280
+ #: inc/course/class-lp-course.php:51 inc/quiz/class-lp-quiz.php:123
3281
+ msgid ""
3282
+ "Congrats! You have re-taken this quiz. Please wait a moment and the page "
3283
+ "will reload"
3284
+ msgstr ""
3285
+ "¡Felicidades! Ha retomado este exámen. Por favor, espere un momento y la "
3286
+ "página se recargará"
3287
+
3288
+ #: inc/course/lp-course-functions.php:133
3289
+ msgctxt "slug"
3290
+ msgid "uncategorized"
3291
+ msgstr "sin categorizar"
3292
+
3293
+ #: inc/course/lp-course-functions.php:178
3294
+ #, php-format
3295
+ msgid "The course %d does not exists"
3296
+ msgstr "El curso %d no existe"
3297
+
3298
+ #: inc/course/lp-course-functions.php:612
3299
+ msgid "Course item navigation"
3300
+ msgstr "Configuración del Curso"
3301
+
3302
+ #: inc/course/lp-course-functions.php:619 templates/content-quiz/buttons.php:31
3303
+ msgid "Previous"
3304
+ msgstr "Anterior"
3305
+
3306
+ #: inc/course/lp-course-functions.php:619
3307
+ msgid "Previous post:"
3308
+ msgstr "Publicación anterior:"
3309
+
3310
+ #: inc/course/lp-course-functions.php:627
3311
+ #: templates/content-lesson/__next-button.php:10
3312
+ #: templates/content-quiz/buttons.php:32
3313
+ msgid "Next"
3314
+ msgstr "Siguiente"
3315
+
3316
+ #: inc/course/lp-course-functions.php:627
3317
+ msgid "Next post:"
3318
+ msgstr "Próxima publicación:"
3319
+
3320
+ #: inc/custom-post-types/abstract.php:414
3321
+ #: inc/custom-post-types/abstract.php:417
3322
+ msgid "updated."
3323
+ msgstr "Actualizada"
3324
+
3325
+ #: inc/custom-post-types/abstract.php:415
3326
+ msgid "Custom field updated."
3327
+ msgstr "Campo personalizado actualizado."
3328
+
3329
+ #: inc/custom-post-types/abstract.php:416
3330
+ msgid "Custom field deleted."
3331
+ msgstr "Campo personalizado borrado."
3332
+
3333
+ #: inc/custom-post-types/abstract.php:419
3334
+ #, php-format
3335
+ msgid "Lesson restored to revision from %s"
3336
+ msgstr "Lección restaurada a partir de la revisión %s"
3337
+
3338
+ #: inc/custom-post-types/abstract.php:420
3339
+ msgid "published."
3340
+ msgstr "publicado"
3341
+
3342
+ #: inc/custom-post-types/abstract.php:421
3343
+ msgid "saved."
3344
+ msgstr "guardada."
3345
+
3346
+ #: inc/custom-post-types/abstract.php:422
3347
+ msgid "submitted."
3348
+ msgstr "enviado."
3349
+
3350
+ #: inc/custom-post-types/abstract.php:424
3351
+ #, php-format
3352
+ msgid "scheduled for: <strong>%1$s</strong>."
3353
+ msgstr "Programada para: <strong>%1$s</strong>."
3354
+
3355
+ #: inc/custom-post-types/abstract.php:426
3356
+ msgid "M j, Y @ G:i"
3357
+ msgstr ""
3358
+
3359
+ #: inc/custom-post-types/abstract.php:428
3360
+ msgid "draft updated."
3361
+ msgstr "Borrador actualizado"
3362
+
3363
+ #: inc/custom-post-types/abstract.php:434
3364
+ #: inc/custom-post-types/abstract.php:445 inc/custom-post-types/lesson.php:213
3365
+ #: inc/custom-post-types/question.php:279 inc/custom-post-types/quiz.php:349
3366
+ #: templates/profile/tabs/orders.php:39
3367
+ msgid "View"
3368
+ msgstr "Ver"
3369
+
3370
+ #: inc/custom-post-types/course.php:144
3371
+ msgid "Reorder"
3372
+ msgstr "Reordenar"
3373
+
3374
+ #: inc/custom-post-types/course.php:146
3375
+ msgid "Switch to meta boxes"
3376
+ msgstr "Cambiar a cajas de meta"
3377
+
3378
+ #: inc/custom-post-types/course.php:156
3379
+ msgid "Would you like to see the meta boxes in tabs style?"
3380
+ msgstr "¿Te gustaría ver los cuadros de meta en el estilo de pestañas?"
3381
+
3382
+ #: inc/custom-post-types/course.php:158
3383
+ msgid "Switch meta boxes to tabs"
3384
+ msgstr "Cambiar a la pestaña"
3385
+
3386
+ #: inc/custom-post-types/course.php:166
3387
+ msgid "Toggle"
3388
+ msgstr "Toggle"
3389
+
3390
+ #: inc/custom-post-types/course.php:167
3391
+ msgid "Switch to tabs"
3392
+ msgstr "Vaya a la pestaña"
3393
+
3394
+ #: inc/custom-post-types/course.php:202 inc/custom-post-types/course.php:204
3395
+ msgid "Course Categories"
3396
+ msgstr "Categorías de cursos:"
3397
+
3398
+ #: inc/custom-post-types/course.php:205 inc/custom-post-types/course.php:206
3399
+ msgid "Category"
3400
+ msgstr "Categoría"
3401
+
3402
+ #: inc/custom-post-types/course.php:207
3403
+ msgid "Add New Course Category"
3404
+ msgstr "Añadir nueva categoría al curso"
3405
+
3406
+ #: inc/custom-post-types/course.php:208
3407
+ msgid "All Categories"
3408
+ msgstr "Todas las categorías"
3409
+
3410
+ #: inc/custom-post-types/course.php:219
3411
+ msgctxt "slug"
3412
+ msgid "course-category"
3413
+ msgstr "categoria-curso"
3414
+
3415
+ #: inc/custom-post-types/course.php:230
3416
+ msgid "Course Tags"
3417
+ msgstr "Etiquetas de Cursos"
3418
+
3419
+ #: inc/custom-post-types/course.php:231 inc/custom-post-types/question.php:74
3420
+ #: inc/custom-post-types/question.php:75 inc/updates/_update-from-0.9.php:1166
3421
+ #: inc/updates/_update-from-0.9.php:1167 inc/updates/_update-from-0.9.php:1168
3422
+ #: inc/updates/_update-from-0.9.php:1185 inc/updates/_update-from-0.9.php:1186
3423
+ msgid "Tag"
3424
+ msgstr "Etiqueta"
3425
+
3426
+ #: inc/custom-post-types/course.php:232
3427
+ msgid "Search Course Tags"
3428
+ msgstr "Buscar las etiquetas de cursos"
3429
+
3430
+ #: inc/custom-post-types/course.php:233
3431
+ msgid "Popular Course Tags"
3432
+ msgstr "Etiquetas populares de cursos"
3433
+
3434
+ #: inc/custom-post-types/course.php:234
3435
+ msgid "All Course Tags"
3436
+ msgstr "Todas las Etiquetas de Cursos"
3437
+
3438
+ #: inc/custom-post-types/course.php:237
3439
+ msgid "Edit Course Tag"
3440
+ msgstr "Editar etiquetas de Curso"
3441
+
3442
+ #: inc/custom-post-types/course.php:238
3443
+ msgid "Update Course Tag"
3444
+ msgstr "Actualizar Etiqueta de curso"
3445
+
3446
+ #: inc/custom-post-types/course.php:239
3447
+ msgid "Add New Course Tag"
3448
+ msgstr "Añadir Etiqueta Nueva de Curso"
3449
+
3450
+ #: inc/custom-post-types/course.php:240
3451
+ msgid "New Course Tag Name"
3452
+ msgstr "Nueva Etiqueta de Curso"
3453
+
3454
+ #: inc/custom-post-types/course.php:241
3455
+ msgid "Separate tags with commas"
3456
+ msgstr "Separar etiquetas con comas"
3457
+
3458
+ #: inc/custom-post-types/course.php:242
3459
+ msgid "Add or remove tags"
3460
+ msgstr "Añadir o eliminar etiquetas"
3461
+
3462
+ #: inc/custom-post-types/course.php:243
3463
+ msgid "Choose from the most used tags"
3464
+ msgstr "Elegir entre las etiquetas más usadas"
3465
+
3466
+ #: inc/custom-post-types/course.php:253
3467
+ msgctxt "slug"
3468
+ msgid "course-tag"
3469
+ msgstr "curso-etiqueta"
3470
+
3471
+ #: inc/custom-post-types/course.php:332
3472
+ msgid "Sorry! You can not update a course while it is viewing!"
3473
+ msgstr "¡Lo siento! No se puede actualizar un curso mientras se está viendo!"
3474
+
3475
+ #: inc/custom-post-types/course.php:368
3476
+ msgid "Toggle Course Content"
3477
+ msgstr "Contenido del curso"
3478
+
3479
+ #: inc/custom-post-types/course.php:385
3480
+ msgid "Please enter the title of the course"
3481
+ msgstr "Por favor, introduzca el título del curso"
3482
+
3483
+ #: inc/custom-post-types/course.php:386
3484
+ msgid "Please add at least one section for the course"
3485
+ msgstr "Por favor añada al menos una sección para el curso"
3486
+
3487
+ #: inc/custom-post-types/course.php:387
3488
+ msgid "Please enter the title of the section"
3489
+ msgstr "Por favor, introduzca el título de la sección"
3490
+
3491
+ #: inc/custom-post-types/course.php:388
3492
+ msgid "Please set a price for this course"
3493
+ msgstr "Por favor, fije un precio para este curso"
3494
+
3495
+ #: inc/custom-post-types/course.php:406
3496
+ msgid "You course will become to Pending"
3497
+ msgstr ""
3498
+
3499
+ #: inc/custom-post-types/course.php:449
3500
+ msgctxt "Post Type General Name"
3501
+ msgid "Courses"
3502
+ msgstr "Cursos"
3503
+
3504
+ #: inc/custom-post-types/course.php:450
3505
+ msgctxt "Post Type Singular Name"
3506
+ msgid "Course"
3507
+ msgstr "Curso"
3508
+
3509
+ #: inc/custom-post-types/course.php:452
3510
+ msgid "Parent Item:"
3511
+ msgstr "Elemento Padre:"
3512
+
3513
+ #: inc/custom-post-types/course.php:454
3514
+ msgid "View Course"
3515
+ msgstr "Ver cursos"
3516
+
3517
+ #: inc/custom-post-types/course.php:455
3518
+ msgid "Add New Course"
3519
+ msgstr "Añadir Nuevo Curso"
3520
+
3521
+ #: inc/custom-post-types/course.php:457
3522
+ msgid "Edit Course"
3523
+ msgstr "Editar Curso"
3524
+
3525
+ #: inc/custom-post-types/course.php:458
3526
+ msgid "Update Course"
3527
+ msgstr "Actualizar curso"
3528
+
3529
+ #: inc/custom-post-types/course.php:459
3530
+ msgid "Search Courses"
3531
+ msgstr "Buscar cursos"
3532
+
3533
+ #: inc/custom-post-types/course.php:460
3534
+ #, php-format
3535
+ msgid ""
3536
+ "You have not got any courses yet. Click <a href=\"%s\">Add new</a> to start"
3537
+ msgstr ""
3538
+ "Aún no has subido cursos. Haz clic en <a href=\"%s\">Agregar nuevo</a> para "
3539
+ "iniciar"
3540
+
3541
+ #: inc/custom-post-types/course.php:461
3542
+ msgid "No course found in Trash"
3543
+ msgstr "No hay cursos en la Papelera"
3544
+
3545
+ #: inc/custom-post-types/course.php:559 inc/custom-post-types/quiz.php:145
3546
+ msgid "General Settings"
3547
+ msgstr "Ajustes generales"
3548
+
3549
+ #: inc/custom-post-types/course.php:564 inc/custom-post-types/lesson.php:176
3550
+ #: inc/custom-post-types/quiz.php:164 inc/custom-post-types/quiz.php:318
3551
+ msgid "Duration"
3552
+ msgstr "Duración.."
3553
+
3554
+ #: inc/custom-post-types/course.php:567
3555
+ msgid "The duration of the course (by weeks)."
3556
+ msgstr "Duración del Curso (semanas)"
3557
+
3558
+ #: inc/custom-post-types/course.php:571
3559
+ msgid "Maximum students"
3560
+ msgstr "Máximo de estudiantes"
3561
+
3562
+ #: inc/custom-post-types/course.php:574
3563
+ msgid "Maximum number of students who can enroll in this course."
3564
+ msgstr "Número máximo de alumnos que pueden matricularse este curso"
3565
+
3566
+ #: inc/custom-post-types/course.php:578
3567
+ msgid "Students enrolled"
3568
+ msgstr "Estudiantes Inscritos"
3569
+
3570
+ #: inc/custom-post-types/course.php:581
3571
+ msgid "How many students have taken this course."
3572
+ msgstr "Cuántos alumnos han tomado este curso"
3573
+
3574
+ #: inc/custom-post-types/course.php:585
3575
+ msgid "Re-take course"
3576
+ msgstr "Tomar este Curso"
3577
+
3578
+ #: inc/custom-post-types/course.php:588
3579
+ msgid "How many times the user can re-take this course. Set to 0 to disable."
3580
+ msgstr ""
3581
+ "¿Cuántas veces el usuario puede volver a tomar este curso. Se establece en 0 "
3582
+ "para desactivarlo."
3583
+
3584
+ #: inc/custom-post-types/course.php:592
3585
+ msgid "Featured"
3586
+ msgstr "Destacado"
3587
+
3588
+ #: inc/custom-post-types/course.php:595
3589
+ msgid "Set course as featured."
3590
+ msgstr "Establecer como destacado"
3591
+
3592
+ #: inc/custom-post-types/course.php:613
3593
+ msgid "The method to assess the result of a student for a course."
3594
+ msgstr "El método para evaluar el resultado de un estudiante en un curso."
3595
+
3596
+ #: inc/custom-post-types/course.php:615
3597
+ msgid ""
3598
+ "<br /><strong>Note! </strong>No final quiz in course, please add a final quiz"
3599
+ msgstr ""
3600
+ "<br /><strong>Nota! </strong>El curso no tiene examen final, por favor añade "
3601
+ "uno"
3602
+
3603
+ #: inc/custom-post-types/course.php:619
3604
+ msgid "Assessment"
3605
+ msgstr "Evaluación"
3606
+
3607
+ #: inc/custom-post-types/course.php:624
3608
+ msgid "Course result"
3609
+ msgstr "Resultado del Curso"
3610
+
3611
+ #: inc/custom-post-types/course.php:629
3612
+ msgid "Evaluate lessons"
3613
+ msgstr "Evaluar lecciones"
3614
+
3615
+ #: inc/custom-post-types/course.php:630
3616
+ msgid "Evaluate result of quizzes"
3617
+ msgstr "Evaluar el resultado de los exámenes"
3618
+
3619
+ #: inc/custom-post-types/course.php:631
3620
+ msgid "Evaluate the result of the final quiz"
3621
+ msgstr "Evaluar el resultado del examen final"
3622
+
3623
+ #: inc/custom-post-types/course.php:636
3624
+ msgid "Passing condition value"
3625
+ msgstr "Valor para pasar"
3626
+
3627
+ #: inc/custom-post-types/course.php:641
3628
+ msgid ""
3629
+ "The percentage of quiz result or lessons completed to finish the course."
3630
+ msgstr ""
3631
+ "El porcentaje necesario de lecciones completadas o de resultado del exámen "
3632
+ "para aprobar el curso"
3633
+
3634
+ #: inc/custom-post-types/course.php:662
3635
+ msgid "Payment Settings"
3636
+ msgstr "Configuración de pagos"
3637
+
3638
+ #: inc/custom-post-types/course.php:667
3639
+ msgid "Course payment"
3640
+ msgstr "Pago de Cursos"
3641
+
3642
+ #: inc/custom-post-types/course.php:670
3643
+ msgid ""
3644
+ "If it is checked, An administrator will review then set course price and "
3645
+ "commission."
3646
+ msgstr ""
3647
+ "Si se paga, Un administrador revisará a continuación, establecer el precio "
3648
+ "del curso y la comisión"
3649
+
3650
+ #: inc/custom-post-types/course.php:680
3651
+ msgid "If free, this field is empty or set 0. (Only admin can edit this field)"
3652
+ msgstr ""
3653
+ "Si es gratis, este campo está vacío o con un 0. (Sólo el administrador puede "
3654
+ "editar este campo)"
3655
+
3656
+ #: inc/custom-post-types/course.php:691
3657
+ #, php-format
3658
+ msgid ""
3659
+ "This course is requires enrollment and the suggested price is <strong>%s</"
3660
+ "strong>"
3661
+ msgstr ""
3662
+ "Este curso requiere inscripción y el precio sugerido es <strong>%s</strong>"
3663
+
3664
+ #: inc/custom-post-types/course.php:699
3665
+ msgid "This course is free."
3666
+ msgstr "Este curso es gratuito."
3667
+
3668
+ #: inc/custom-post-types/course.php:705 inc/custom-post-types/course.php:1292
3669
+ #: inc/custom-post-types/course.php:1298 templates/cart/form.php:30
3670
+ #: templates/emails/order-items-table.php:21
3671
+ msgid "Price"
3672
+ msgstr "Precio"
3673
+
3674
+ #: inc/custom-post-types/course.php:715
3675
+ msgid "Sale Price"
3676
+ msgstr "Precio de venta"
3677
+
3678
+ #: inc/custom-post-types/course.php:720
3679
+ msgid "Schedule"
3680
+ msgstr "Agenda"
3681
+
3682
+ #: inc/custom-post-types/course.php:725
3683
+ msgid "Sale start date"
3684
+ msgstr "Fecha de inicio de la venta"
3685
+
3686
+ #: inc/custom-post-types/course.php:732
3687
+ msgid "Sale end date"
3688
+ msgstr "Fecha de fin"
3689
+
3690
+ #: inc/custom-post-types/course.php:743
3691
+ msgid "Course Suggestion Price"
3692
+ msgstr "Precio Sugerido del Curso"
3693
+
3694
+ #: inc/custom-post-types/course.php:748
3695
+ msgid "The course price you want to suggest for admin to set."
3696
+ msgstr ""
3697
+ "El precio del curso que desea sugerir para que el administrador configure."
3698
+
3699
+ #: inc/custom-post-types/course.php:754
3700
+ msgid "Price set by Admin"
3701
+ msgstr "Precio fijado por Admin"
3702
+
3703
+ #: inc/custom-post-types/course.php:758
3704
+ msgid "Not set"
3705
+ msgstr "No definido"
3706
+
3707
+ #: inc/custom-post-types/course.php:765
3708
+ msgid "Requires enroll"
3709
+ msgstr "Requiere inscribirse"
3710
+
3711
+ #: inc/custom-post-types/course.php:768
3712
+ msgid "Require users logged in to study or public to all."
3713
+ msgstr ""
3714
+ "Requiere que los usuarios ingresen sesión para estudiar o mantenerlo público "
3715
+ "a todos"
3716
+
3717
+ #: inc/custom-post-types/course.php:803
3718
+ msgid "Author Settings"
3719
+ msgstr "Ajustes de autor"
3720
+
3721
+ #: inc/custom-post-types/course.php:808 inc/custom-post-types/course.php:1289
3722
+ #: inc/custom-post-types/course.php:1295 inc/custom-post-types/lesson.php:171
3723
+ #: inc/custom-post-types/question.php:243 inc/custom-post-types/quiz.php:315
3724
+ msgid "Author"
3725
+ msgstr "Autor"
3726
+
3727
+ #: inc/custom-post-types/course.php:814
3728
+ msgid "Select author"
3729
+ msgstr "Seleccionar autor"
3730
+
3731
+ #: inc/custom-post-types/course.php:832
3732
+ msgid "Review Logs"
3733
+ msgstr "Revisar registros"
3734
+
3735
+ #: inc/custom-post-types/course.php:989
3736
+ msgid "Course Curriculum only appear if course is saved"
3737
+ msgstr "Curriculum supuesto, sólo aparece si el curso se guarda"
3738
+
3739
+ #: inc/custom-post-types/course.php:1146
3740
+ msgid "Course has approved by Reviewer"
3741
+ msgstr ""
3742
+
3743
+ #: inc/custom-post-types/course.php:1151
3744
+ msgid "Course has rejected by Reviewer"
3745
+ msgstr ""
3746
+
3747
+ #: inc/custom-post-types/course.php:1156
3748
+ #, php-format
3749
+ msgid "Course has submitted by %s"
3750
+ msgstr ""
3751
+
3752
+ #: inc/custom-post-types/course.php:1161
3753
+ msgid "Course has updated by Reviewer"
3754
+ msgstr ""
3755
+
3756
+ #: inc/custom-post-types/course.php:1198
3757
+ msgid "Your course has been published"
3758
+ msgstr "Tu curso ha sido publicado"
3759
+
3760
+ #: inc/custom-post-types/course.php:1324
3761
+ #, php-format
3762
+ msgctxt "learnpress"
3763
+ msgid "%d section"
3764
+ msgid_plural "%d sections"
3765
+ msgstr[0] ""
3766
+ msgstr[1] ""
3767
+
3768
+ #: inc/custom-post-types/course.php:1327
3769
+ #, php-format
3770
+ msgctxt "learnpress"
3771
+ msgid "%d lesson"
3772
+ msgid_plural "%d lessons"
3773
+ msgstr[0] ""
3774
+ msgstr[1] ""
3775
+
3776
+ #: inc/custom-post-types/course.php:1329
3777
+ msgid "0 lesson"
3778
+ msgstr "0 lección"
3779
+
3780
+ #: inc/custom-post-types/course.php:1333
3781
+ #, php-format
3782
+ msgctxt "learnpress"
3783
+ msgid "%d quiz"
3784
+ msgid_plural "%d quizzes"
3785
+ msgstr[0] ""
3786
+ msgstr[1] ""
3787
+
3788
+ #: inc/custom-post-types/course.php:1335
3789
+ msgid "0 quiz"
3790
+ msgstr "0 Exámen"
3791
+
3792
+ #: inc/custom-post-types/course.php:1340
3793
+ msgid "No content"
3794
+ msgstr "No existe contenido"
3795
+
3796
+ #: inc/custom-post-types/course.php:1500
3797
+ msgid "Course Video"
3798
+ msgstr "Video del Curso"
3799
+
3800
+ #: inc/custom-post-types/course.php:1505
3801
+ msgid "Video ID"
3802
+ msgstr ""
3803
+
3804
+ #: inc/custom-post-types/course.php:1508
3805
+ msgid "The id of Youtube or Vimeo video"
3806
+ msgstr "El id del vídeo de Youtube o Vimeo"
3807
+
3808
+ #: inc/custom-post-types/course.php:1512
3809
+ msgid "Video Type"
3810
+ msgstr "Tipo de Video"
3811
+
3812
+ #: inc/custom-post-types/course.php:1515
3813
+ msgid "Chose video type"
3814
+ msgstr "Elegir el tipo de vídeo"
3815
+
3816
+ #: inc/custom-post-types/course.php:1518
3817
+ msgid "Youtube"
3818
+ msgstr ""
3819
+
3820
+ #: inc/custom-post-types/course.php:1519
3821
+ msgid "Vimeo"
3822
+ msgstr ""
3823
+
3824
+ #: inc/custom-post-types/course.php:1523
3825
+ msgid "Embed width"
3826
+ msgstr "Ancho del video a Insertar"
3827
+
3828
+ #: inc/custom-post-types/course.php:1526
3829
+ msgid "Set width of embed"
3830
+ msgstr "Establecer el ancho de inserción"
3831
+
3832
+ #: inc/custom-post-types/course.php:1530
3833
+ msgid "Embed height"
3834
+ msgstr "Encrustar"
3835
+
3836
+ #: inc/custom-post-types/course.php:1533
3837
+ msgid "Set height of embed"
3838
+ msgstr "Ajuste altura de inserción"
3839
+
3840
+ #: inc/custom-post-types/lesson.php:58 inc/custom-post-types/lesson.php:59
3841
+ #: inc/custom-post-types/lesson.php:62
3842
+ msgid "Lessons"
3843
+ msgstr "Lecciones"
3844
+
3845
+ #: inc/custom-post-types/lesson.php:61
3846
+ msgid "Add New Lesson"
3847
+ msgstr "Agregar Nueva Lección"
3848
+
3849
+ #: inc/custom-post-types/lesson.php:63
3850
+ msgid "View Lesson"
3851
+ msgstr "Ver Lección"
3852
+
3853
+ #: inc/custom-post-types/lesson.php:65
3854
+ msgid "Edit Lesson"
3855
+ msgstr "Editar Lección"
3856
+
3857
+ #: inc/custom-post-types/lesson.php:66
3858
+ msgid "Update Lesson"
3859
+ msgstr "Actualizar lección"
3860
+
3861
+ #: inc/custom-post-types/lesson.php:67
3862
+ msgid "Search Lessons"
3863
+ msgstr "Buscar lecciones"
3864
+
3865
+ #: inc/custom-post-types/lesson.php:68
3866
+ msgid "No lesson found"
3867
+ msgstr "No se ha encontrado ninguna lección"
3868
+
3869
+ #: inc/custom-post-types/lesson.php:69
3870
+ msgid "No lesson found in Trash"
3871
+ msgstr "No hay lecciones en la Papelera"
3872
+
3873
+ #: inc/custom-post-types/lesson.php:103
3874
+ msgid "Lesson Settings"
3875
+ msgstr "Configuración de la lección"
3876
+
3877
+ #: inc/custom-post-types/lesson.php:107
3878
+ msgid "Lesson Duration"
3879
+ msgstr "Duración de la lección"
3880
+
3881
+ #: inc/custom-post-types/lesson.php:112
3882
+ msgid "Duration of the lesson. Set 0 to disable"
3883
+ msgstr "Duración de la lección. 0 para desactivar"
3884
+
3885
+ #: inc/custom-post-types/lesson.php:116
3886
+ msgid "Preview Lesson"
3887
+ msgstr "Vista Preliminar de Lección"
3888
+
3889
+ #: inc/custom-post-types/lesson.php:119
3890
+ msgid ""
3891
+ "If this is a preview lesson, then student can view this lesson content "
3892
+ "without taking the course"
3893
+ msgstr ""
3894
+ "Si esta es una lección de vista previa, entonces el estudiante puede ver el "
3895
+ "contenido de la lección sin tomar el curso"
3896
+
3897
+ #: inc/custom-post-types/lesson.php:142
3898
+ msgid "Please enter the title of the lesson"
3899
+ msgstr "Por favor, introduzca el título del exámen"
3900
+
3901
+ #: inc/custom-post-types/lesson.php:175
3902
+ msgid "Format"
3903
+ msgstr "Formato"
3904
+
3905
+ #: inc/custom-post-types/lesson.php:216 inc/custom-post-types/question.php:282
3906
+ #: inc/custom-post-types/quiz.php:352
3907
+ msgid "Remove Filter"
3908
+ msgstr "Borrar filtro"
3909
+
3910
+ #: inc/custom-post-types/lesson.php:218 inc/custom-post-types/question.php:284
3911
+ #: inc/custom-post-types/quiz.php:354
3912
+ msgid "Filter"
3913
+ msgstr "Filtrar"
3914
+
3915
+ #: inc/custom-post-types/lesson.php:224 inc/custom-post-types/question.php:290
3916
+ #: inc/custom-post-types/quiz.php:361
3917
+ msgid "Not assigned yet"
3918
+ msgstr "No asignado todavía"
3919
+
3920
+ #: inc/custom-post-types/lesson.php:237
3921
+ msgid "Standard"
3922
+ msgstr "Estándar"
3923
+
3924
+ #: inc/custom-post-types/order.php:122
3925
+ msgid "Order number, user name, user email, course name etc..."
3926
+ msgstr ""
3927
+ "Número de pedido, nombre de usuario, correo electrónico del usuario, etc ..."
3928
+
3929
+ #: inc/custom-post-types/order.php:195
3930
+ msgid "Processing..."
3931
+ msgstr "Procesando..."
3932
+
3933
+ #: inc/custom-post-types/order.php:212 inc/custom-post-types/order.php:215
3934
+ msgid "Apply"
3935
+ msgstr "Aplicar"
3936
+
3937
+ #: inc/custom-post-types/order.php:243 inc/custom-post-types/order.php:418
3938
+ msgid "View Order"
3939
+ msgstr "Ver Pedido"
3940
+
3941
+ #: inc/custom-post-types/order.php:303 inc/custom-post-types/order.php:414
3942
+ #: templates/profile/tabs/orders.php:15
3943
+ msgid "Order"
3944
+ msgstr "Pedido"
3945
+
3946
+ #: inc/custom-post-types/order.php:304
3947
+ msgid "Student"
3948
+ msgstr "Alumno"
3949
+
3950
+ #: inc/custom-post-types/order.php:308 templates/profile/tabs/orders.php:17
3951
+ msgid "Status"
3952
+ msgstr "Estado"
3953
+
3954
+ #: inc/custom-post-types/order.php:366
3955
+ msgid "Course does not exist"
3956
+ msgstr ""
3957
+
3958
+ #: inc/custom-post-types/order.php:415
3959
+ msgid "Add New Order"
3960
+ msgstr "Agregar Nueva Órden"
3961
+
3962
+ #: inc/custom-post-types/order.php:416 inc/custom-post-types/order.php:563
3963
+ #: templates/order/order-details.php:13
3964
+ msgid "Order Details"
3965
+ msgstr "Información de pedido"
3966
+
3967
+ #: inc/custom-post-types/order.php:420
3968
+ msgid "Update Order"
3969
+ msgstr "Actualizar Pedido"
3970
+
3971
+ #: inc/custom-post-types/order.php:421
3972
+ msgid "Search Orders"
3973
+ msgstr "Buscar pedidos"
3974
+
3975
+ #: inc/custom-post-types/order.php:422
3976
+ msgid "No order found"
3977
+ msgstr "No se ha encontrado ningún pedido"
3978
+
3979
+ #: inc/custom-post-types/order.php:423
3980
+ msgid "No order found in Trash"
3981
+ msgstr "No hay pedidos en la Papelera"
3982
+
3983
+ #: inc/custom-post-types/order.php:486 inc/order/lp-order-functions.php:657
3984
+ msgctxt "Order status"
3985
+ msgid "Completed"
3986
+ msgstr "Completado"
3987
+
3988
+ #: inc/custom-post-types/order.php:491
3989
+ #, php-format
3990
+ msgid "Completed <span class=\"count\">(%s)</span>"
3991
+ msgid_plural "Completed <span class=\"count\">(%s)</span>"
3992
+ msgstr[0] ""
3993
+ msgstr[1] ""
3994
+
3995
+ #: inc/custom-post-types/order.php:494 inc/order/lp-order-functions.php:656
3996
+ msgctxt "Order status"
3997
+ msgid "Processing"
3998
+ msgstr "Procesando"
3999
+
4000
+ #: inc/custom-post-types/order.php:499
4001
+ #, php-format
4002
+ msgid "Processing <span class=\"count\">(%s)</span>"
4003
+ msgid_plural "Processing <span class=\"count\">(%s)</span>"
4004
+ msgstr[0] ""
4005
+ msgstr[1] ""
4006
+
4007
+ #: inc/custom-post-types/order.php:502
4008
+ msgctxt "Order status"
4009
+ msgid "Pending Payment"
4010
+ msgstr "Pago Pendiente"
4011
+
4012
+ #: inc/custom-post-types/order.php:507
4013
+ #, php-format
4014
+ msgid "Pending Payment <span class=\"count\">(%s)</span>"
4015
+ msgid_plural "Pending Payment <span class=\"count\">(%s)</span>"
4016
+ msgstr[0] ""
4017
+ msgstr[1] ""
4018
+
4019
+ #: inc/custom-post-types/order.php:510 inc/order/lp-order-functions.php:658
4020
+ msgctxt "Order status"
4021
+ msgid "On Hold"
4022
+ msgstr ""
4023
+
4024
+ #: inc/custom-post-types/order.php:515
4025
+ #, php-format
4026
+ msgid "On Hold <span class=\"count\">(%s)</span>"
4027
+ msgid_plural "On Hold <span class=\"count\">(%s)</span>"
4028
+ msgstr[0] ""
4029
+ msgstr[1] ""
4030
+
4031
+ #: inc/custom-post-types/order.php:518 inc/order/lp-order-functions.php:661
4032
+ msgctxt "Order status"
4033
+ msgid "Cancelled"
4034
+ msgstr ""
4035
+
4036
+ #: inc/custom-post-types/order.php:523
4037
+ #, php-format
4038
+ msgid "Cancelled <span class=\"count\">(%s)</span>"
4039
+ msgid_plural "Cancelled <span class=\"count\">(%s)</span>"
4040
+ msgstr[0] ""
4041
+ msgstr[1] ""
4042
+
4043
+ #: inc/custom-post-types/order.php:526 inc/order/lp-order-functions.php:659
4044
+ msgctxt "Order status"
4045
+ msgid "Refunded"
4046
+ msgstr ""
4047
+
4048
+ #: inc/custom-post-types/order.php:531
4049
+ #, php-format
4050
+ msgid "Refunded <span class=\"count\">(%s)</span>"
4051
+ msgid_plural "Refunded <span class=\"count\">(%s)</span>"
4052
+ msgstr[0] ""
4053
+ msgstr[1] ""
4054
+
4055
+ #: inc/custom-post-types/order.php:534 inc/order/lp-order-functions.php:660
4056
+ msgctxt "Order status"
4057
+ msgid "Failed"
4058
+ msgstr ""
4059
+
4060
+ #: inc/custom-post-types/order.php:539
4061
+ #, php-format
4062
+ msgid "Failed <span class=\"count\">(%s)</span>"
4063
+ msgid_plural "Failed <span class=\"count\">(%s)</span>"
4064
+ msgstr[0] ""
4065
+ msgstr[1] ""
4066
+
4067
+ #: inc/custom-post-types/order.php:564
4068
+ msgid "Order Actions"
4069
+ msgstr "Acciones del Pedido"
4070
+
4071
+ #: inc/custom-post-types/question.php:73 inc/updates/_update-from-0.9.php:1184
4072
+ msgid "Question Tag"
4073
+ msgstr "Etiqueta de la pregunta"
4074
+
4075
+ #: inc/custom-post-types/question.php:76 inc/updates/_update-from-0.9.php:1169
4076
+ #: inc/updates/_update-from-0.9.php:1187
4077
+ msgid "Add New Tag"
4078
+ msgstr "Añadir nueva etiqueta"
4079
+
4080
+ #: inc/custom-post-types/question.php:77 inc/updates/_update-from-0.9.php:1170
4081
+ #: inc/updates/_update-from-0.9.php:1188
4082
+ msgid "All Tags"
4083
+ msgstr "Todas las etiquetas"
4084
+
4085
+ #: inc/custom-post-types/question.php:94 inc/custom-post-types/question.php:95
4086
+ msgid "Question Bank"
4087
+ msgstr "Banco de preguntas"
4088
+
4089
+ #: inc/custom-post-types/question.php:96
4090
+ msgid "Question"
4091
+ msgstr "Pregunta"
4092
+
4093
+ #: inc/custom-post-types/question.php:98
4094
+ msgid "View Question"
4095
+ msgstr "Ver Pregunta"
4096
+
4097
+ #: inc/custom-post-types/question.php:99
4098
+ msgid "Add New Question"
4099
+ msgstr "Añadir Pregunta Nueva"
4100
+
4101
+ #: inc/custom-post-types/question.php:101
4102
+ msgid "Edit Question"
4103
+ msgstr "Editar Pregunta"
4104
+
4105
+ #: inc/custom-post-types/question.php:102
4106
+ msgid "Update Question"
4107
+ msgstr "Actualizar pregunta"
4108
+
4109
+ #: inc/custom-post-types/question.php:103
4110
+ msgid "Search Questions"
4111
+ msgstr "Buscar preguntas"
4112
+
4113
+ #: inc/custom-post-types/question.php:105
4114
+ msgid "No questions found in trash"
4115
+ msgstr "No se encontraron preguntas en papelera"
4116
+
4117
+ #: inc/custom-post-types/question.php:127
4118
+ #: inc/question/abstract-lp-question.php:662
4119
+ msgid "Answer"
4120
+ msgstr "Respuesta"
4121
+
4122
+ #: inc/custom-post-types/question.php:152
4123
+ msgid "Mark for this question"
4124
+ msgstr "Elegir esta pregunta"
4125
+
4126
+ #: inc/custom-post-types/question.php:156
4127
+ msgid "Mark for choosing the right answer"
4128
+ msgstr "Marcar para elegir la respuesta correcta"
4129
+
4130
+ #: inc/custom-post-types/question.php:161
4131
+ msgid "Question explanation"
4132
+ msgstr "Explicación pregunta"
4133
+
4134
+ #: inc/custom-post-types/question.php:164
4135
+ msgid "Explain why an option is true and other is false"
4136
+ msgstr "Explicar por qué una opción es verdadera y la otra es falsa"
4137
+
4138
+ #: inc/custom-post-types/question.php:168
4139
+ msgid "Question hint"
4140
+ msgstr "Pista"
4141
+
4142
+ #: inc/custom-post-types/question.php:171
4143
+ msgid "Instruction for user to select the right answer."
4144
+ msgstr "Instrucción para el usuario seleccionar la respuesta correcta."
4145
+
4146
+ #: inc/custom-post-types/question.php:193
4147
+ msgid "Please enter the title of the question."
4148
+ msgstr "Introduce el título de la pregunta"
4149
+
4150
+ #: inc/custom-post-types/question.php:197
4151
+ msgid "Please enter question type."
4152
+ msgstr "Introduce el tipo de pregunta"
4153
+
4154
+ #: inc/custom-post-types/quiz.php:88 inc/custom-post-types/quiz.php:89
4155
+ #: inc/custom-post-types/quiz.php:93
4156
+ msgid "Quizzes"
4157
+ msgstr "Exámenes"
4158
+
4159
+ #: inc/custom-post-types/quiz.php:91
4160
+ msgid "Add New Quiz"
4161
+ msgstr "Añadir exámen"
4162
+
4163
+ #: inc/custom-post-types/quiz.php:92
4164
+ msgid "Edit Quiz"
4165
+ msgstr "Editar exámen"
4166
+
4167
+ #: inc/custom-post-types/quiz.php:94
4168
+ msgid "View Quiz"
4169
+ msgstr "Ver Exámen"
4170
+
4171
+ #: inc/custom-post-types/quiz.php:95
4172
+ msgid "New Quiz"
4173
+ msgstr "Nuevo exámen"
4174
+
4175
+ #: inc/custom-post-types/quiz.php:96
4176
+ msgid "Update Quiz"
4177
+ msgstr "Actualizar exámen"
4178
+
4179
+ #: inc/custom-post-types/quiz.php:97
4180
+ msgid "Search Quizzes"
4181
+ msgstr "Buscar Exámenes"
4182
+
4183
+ #: inc/custom-post-types/quiz.php:98
4184
+ #, php-format
4185
+ msgid ""
4186
+ "You have not got any quizzes yet. Click <a href=\"%s\">Add new</a> to start"
4187
+ msgstr ""
4188
+ "Aún no has conseguido ningún exámen. Hz clic en <a href=\"%s\">Agregar "
4189
+ "nuevo</a> para iniciar"
4190
+
4191
+ #: inc/custom-post-types/quiz.php:99
4192
+ msgid "No quiz found in Trash"
4193
+ msgstr "No hay exámen en la Papelera"
4194
+
4195
+ #: inc/custom-post-types/quiz.php:152
4196
+ msgid "Show/Hide Question"
4197
+ msgstr "Mostrar/Ocultar Pregunta"
4198
+
4199
+ #: inc/custom-post-types/quiz.php:153
4200
+ msgid "Show/Hide list questions on this quiz."
4201
+ msgstr "Mostrar / Ocultar lista de preguntas en este examen."
4202
+
4203
+ #: inc/custom-post-types/quiz.php:158
4204
+ msgid "Show"
4205
+ msgstr "Mostrar"
4206
+
4207
+ #: inc/custom-post-types/quiz.php:165
4208
+ msgid "Duration of the quiz. Set 0 to disable."
4209
+ msgstr "Duración de la prueba. Establecer 0 para desactivar."
4210
+
4211
+ #: inc/custom-post-types/quiz.php:173
4212
+ msgid "Passing Grade Type"
4213
+ msgstr "Tipo de grado de aprobación"
4214
+
4215
+ #: inc/custom-post-types/quiz.php:174 inc/custom-post-types/quiz.php:186
4216
+ msgid "Requires user reached this point to pass the quiz."
4217
+ msgstr "Requiere que el usuario llega a este punto para aprobar la prueba."
4218
+
4219
+ #: inc/custom-post-types/quiz.php:179
4220
+ msgid "Percentage"
4221
+ msgstr "Porcentaje"
4222
+
4223
+ #: inc/custom-post-types/quiz.php:180
4224
+ msgid "Point"
4225
+ msgstr "Punto"
4226
+
4227
+ #: inc/custom-post-types/quiz.php:185
4228
+ msgid "Passing Grade (<span>%</span>)"
4229
+ msgstr "Grado aprovatorio(<span>%</span>)"
4230
+
4231
+ #: inc/custom-post-types/quiz.php:194
4232
+ msgid "Re-take"
4233
+ msgstr "Volver a tomar"
4234
+
4235
+ #: inc/custom-post-types/quiz.php:197
4236
+ msgid "How many times the user can re-take this quiz. Set to 0 to disable"
4237
+ msgstr ""
4238
+ "Cuántas veces el usuario puede volver a tomar el examen. Se establece en 0 "
4239
+ "para desactivar"
4240
+
4241
+ #: inc/custom-post-types/quiz.php:202
4242
+ msgid "Show correct answer"
4243
+ msgstr "Mostrar respuesta correcta"
4244
+
4245
+ #: inc/custom-post-types/quiz.php:205
4246
+ msgid "Show the correct answer in result of the quiz."
4247
+ msgstr "Mostrar la respuesta correcta en el resultado del examen."
4248
+
4249
+ #: inc/custom-post-types/quiz.php:209
4250
+ msgid "Show check answer"
4251
+ msgstr "Mostrar verificación de respuesta"
4252
+
4253
+ #: inc/custom-post-types/quiz.php:212
4254
+ msgid "Show button to check answer while doing quiz."
4255
+ msgstr "Mostrar botón para verificar la respuesta mientras se hace el exámen"
4256
+
4257
+ #: inc/custom-post-types/quiz.php:216
4258
+ msgid "Show hint"
4259
+ msgstr "Mostrar Pista"
4260
+
4261
+ #: inc/custom-post-types/quiz.php:219
4262
+ msgid "Show button to hint answer while doing quiz."
4263
+ msgstr "Mostrar Botón pista mientras se hace el exámen."
4264
+
4265
+ #: inc/custom-post-types/quiz.php:227
4266
+ msgid "Show explanation"
4267
+ msgstr "Mostrar explicación"
4268
+
4269
+ #: inc/custom-post-types/quiz.php:230
4270
+ msgid "Show explanation of question after user checking answer."
4271
+ msgstr ""
4272
+ "Mostrar explicación de la pregunta después de la respuesta ddel uuario."
4273
+
4274
+ #: inc/custom-post-types/quiz.php:256
4275
+ msgid "Please enter the title of the quiz"
4276
+ msgstr "Escribe aquí el título del archivo"
4277
+
4278
+ #: inc/custom-post-types/quiz.php:375
4279
+ #, php-format
4280
+ msgctxt "learnpress"
4281
+ msgid "%d question"
4282
+ msgid_plural "%d questions"
4283
+ msgstr[0] ""
4284
+ msgstr[1] ""
4285
+
4286
+ #: inc/custom-post-types/quiz.php:375
4287
+ msgid "This quiz has no questions"
4288
+ msgstr "Este examen no tiene preguntas"
4289
+
4290
+ #: inc/emails/class-lp-email-become-an-instructor.php:16
4291
+ #: inc/emails/class-lp-email-become-an-instructor.php:22
4292
+ msgid "Become an instructor"
4293
+ msgstr "Conviértete en Mentor"
4294
+
4295
+ #: inc/emails/class-lp-email-become-an-instructor.php:21
4296
+ msgid "[{site_title}] You have enrolled course ({course_name})"
4297
+ msgstr "[{site_title}]Te has inscrito al curso ({course_name})"
4298
+
4299
+ #: inc/emails/class-lp-email-become-an-instructor.php:24
4300
+ #: inc/emails/class-lp-email-new-order.php:26
4301
+ msgid "Shortcodes"
4302
+ msgstr ""
4303
+
4304
+ #: inc/emails/class-lp-email-enrolled-course.php:25
4305
+ msgid "[{{site_title}}] You have enrolled in this course ({{course_name}})"
4306
+ msgstr "[{{site_title}}] Te has inscrito al curso ({{course_name}})"
4307
+
4308
+ #: inc/emails/class-lp-email-finished-course.php:24
4309
+ msgid "[{{site_title}}] You have finished this course ({{course_name}})"
4310
+ msgstr "[{{site_title}}] Has terminado este curso ({{course_name}})"
4311
+
4312
+ #: inc/emails/class-lp-email-new-course.php:25
4313
+ msgid ""
4314
+ "[{{site_title}}] New course has been submitted for review ({{course_name}})"
4315
+ msgstr ""
4316
+ "[{{site_title}}] Se ha enviado nuevo curso para su revisión ({{course_name}})"
4317
+
4318
+ #: inc/emails/class-lp-email-new-order-customer.php:26
4319
+ msgid "[{{site_title}}] Order placed"
4320
+ msgstr "[{{site_title}}] Nuevo pedido realizado"
4321
+
4322
+ #: inc/emails/class-lp-email-new-order-customer.php:27
4323
+ msgid "Order placed"
4324
+ msgstr "Pedido"
4325
+
4326
+ #: inc/emails/class-lp-email-new-order.php:24
4327
+ msgid "[{{site_title}}] New order placed"
4328
+ msgstr "[{{site_title}}] Nuevo pedido realizado"
4329
+
4330
+ #: inc/emails/class-lp-email-published-course.php:21
4331
+ msgid "Approved course"
4332
+ msgstr "Curso aprobado"
4333
+
4334
+ #: inc/emails/class-lp-email-published-course.php:26
4335
+ msgid "[{{site_title}}] Your course {{course_name}} has been approved"
4336
+ msgstr "[{{site_title}}] Tu curso {{course_name}} ha sido aprobado"
4337
+
4338
+ #: inc/emails/class-lp-email-published-course.php:27
4339
+ msgid "Course approved"
4340
+ msgstr "Curso Aprobado"
4341
+
4342
+ #: inc/emails/class-lp-email-rejected-course.php:19
4343
+ #: inc/emails/class-lp-email-rejected-course.php:25
4344
+ msgid "Rejected course"
4345
+ msgstr "Curso rechazado"
4346
+
4347
+ #: inc/emails/class-lp-email-rejected-course.php:24
4348
+ msgid "[{{site_title}}] Your course {{course_name}} has been rejected"
4349
+ msgstr "[{{site_title}}] Tu curso {{course_name}} ha sido aprobado"
4350
+
4351
+ #: inc/emails/class-lp-email-user-order-completed.php:26
4352
+ msgid "Your order {{order_date}} is completed"
4353
+ msgstr "Tu pedido {{order_date}} está completo"
4354
+
4355
+ #: inc/emails/class-lp-email-user-order-completed.php:27
4356
+ msgid "Your order {{order_number}} is completed"
4357
+ msgstr "Tu pedido{{order_number}} está completado"
4358
+
4359
+ #: inc/emails/class-lp-email.php:329
4360
+ msgid "Template file copied to theme."
4361
+ msgstr "Archivo de plantilla copiado al tema."
4362
+
4363
+ #: inc/emails/class-lp-email.php:344
4364
+ msgid "Template file deleted from theme."
4365
+ msgstr ""
4366
+
4367
+ #: inc/emails/class-lp-email.php:543
4368
+ msgid "Could not write to template file."
4369
+ msgstr ""
4370
+
4371
+ #: inc/gateways/paypal/class-lp-gateway-paypal.php:90
4372
+ msgid "Pay with Paypal"
4373
+ msgstr ""
4374
+
4375
+ #: inc/gateways/paypal/class-lp-gateway-paypal.php:231
4376
+ msgid "Error: order ID and key were not found in \"custom\"."
4377
+ msgstr ""
4378
+
4379
+ #: inc/gateways/paypal/class-lp-gateway-paypal.php:241
4380
+ #, php-format
4381
+ msgid "Error: Order Keys do not match %s and %s."
4382
+ msgstr ""
4383
+
4384
+ #: inc/gateways/paypal/class-lp-gateway-paypal.php:290
4385
+ msgid "Paypal settings is not setup"
4386
+ msgstr ""
4387
+
4388
+ #: inc/gateways/paypal/class-lp-gateway-paypal.php:377
4389
+ msgid "IPN payment completed"
4390
+ msgstr ""
4391
+
4392
+ #: inc/gateways/paypal/paypal-ipn/ipn.php:52
4393
+ msgid "Order on "
4394
+ msgstr "Ordenar por "
4395
+
4396
+ #: inc/libraries/meta-box/inc/common.php:49
4397
+ msgid "Extensions"
4398
+ msgstr ""
4399
+
4400
+ #: inc/libraries/meta-box/inc/field.php:217
4401
+ msgid "+"
4402
+ msgstr ""
4403
+
4404
+ #: inc/libraries/meta-box/inc/field.php:226
4405
+ msgid "&#8211;"
4406
+ msgstr ""
4407
+
4408
+ #: inc/libraries/meta-box/inc/meta-box.php:239
4409
+ msgid "Please correct the errors highlighted below and try again."
4410
+ msgstr ""
4411
+
4412
+ #: inc/libraries/meta-box/inc/fields/button.php:31
4413
+ msgid "Click me"
4414
+ msgstr ""
4415
+
4416
+ #: inc/libraries/meta-box/inc/fields/file-advanced.php:20
4417
+ msgid "Select Files"
4418
+ msgstr "Selecciona archivos"
4419
+
4420
+ #: inc/libraries/meta-box/inc/fields/file-advanced.php:59
4421
+ msgctxt "file upload"
4422
+ msgid "Select or Upload Files"
4423
+ msgstr ""
4424
+
4425
+ #: inc/libraries/meta-box/inc/fields/file-advanced.php:95
4426
+ #: inc/libraries/meta-box/inc/fields/file.php:159
4427
+ msgctxt "file upload"
4428
+ msgid "Delete"
4429
+ msgstr ""
4430
+
4431
+ #: inc/libraries/meta-box/inc/fields/file-advanced.php:96
4432
+ #: inc/libraries/meta-box/inc/fields/file.php:160
4433
+ msgctxt "file upload"
4434
+ msgid "Edit"
4435
+ msgstr ""
4436
+
4437
+ #: inc/libraries/meta-box/inc/fields/file-input.php:14
4438
+ msgid "Select File"
4439
+ msgstr "Seleccionar Archivo"
4440
+
4441
+ #: inc/libraries/meta-box/inc/fields/file-input.php:36
4442
+ msgid "Select"
4443
+ msgstr "Seleccionar"
4444
+
4445
+ #: inc/libraries/meta-box/inc/fields/file.php:16
4446
+ #, php-format
4447
+ msgid "You may only upload maximum %d file"
4448
+ msgstr "Solo puedes subir un máximo de %d archivo"
4449
+
4450
+ #: inc/libraries/meta-box/inc/fields/file.php:17
4451
+ #, php-format
4452
+ msgid "You may only upload maximum %d files"
4453
+ msgstr "Sólo se puede cargar un máximo de %d archivos"
4454
+
4455
+ #: inc/libraries/meta-box/inc/fields/file.php:90
4456
+ msgid "Error: Cannot delete file"
4457
+ msgstr "Lo siento, este archivo no puede borrarse"
4458
+
4459
+ #: inc/libraries/meta-box/inc/fields/file.php:103
4460
+ msgctxt "file upload"
4461
+ msgid "Upload Files"
4462
+ msgstr "Subir archivos"
4463
+
4464
+ #: inc/libraries/meta-box/inc/fields/file.php:104
4465
+ msgctxt "file upload"
4466
+ msgid "+ Add new file"
4467
+ msgstr "+Añadir nuevo archivo"
4468
+
4469
+ #: inc/libraries/meta-box/inc/fields/image-advanced.php:20
4470
+ msgid "Select Images"
4471
+ msgstr "Seleccionar Imágenes"
4472
+
4473
+ #: inc/libraries/meta-box/inc/fields/image-advanced.php:64
4474
+ msgctxt "image upload"
4475
+ msgid "Select or Upload Images"
4476
+ msgstr "Seleccionar o cargar imágenes"
4477
+
4478
+ #: inc/libraries/meta-box/inc/fields/image-advanced.php:100
4479
+ #: inc/libraries/meta-box/inc/fields/image.php:127
4480
+ msgctxt "image upload"
4481
+ msgid "Delete"
4482
+ msgstr "Borrar"
4483
+
4484
+ #: inc/libraries/meta-box/inc/fields/image-advanced.php:101
4485
+ #: inc/libraries/meta-box/inc/fields/image.php:128
4486
+ msgctxt "image upload"
4487
+ msgid "Edit"
4488
+ msgstr "Editar"
4489
+
4490
+ #: inc/libraries/meta-box/inc/fields/image.php:63
4491
+ #: inc/libraries/meta-box/inc/fields/thickbox-image.php:30
4492
+ msgctxt "image upload"
4493
+ msgid "Upload Images"
4494
+ msgstr "Subir Imágenes"
4495
+
4496
+ #: inc/libraries/meta-box/inc/fields/image.php:64
4497
+ msgctxt "image upload"
4498
+ msgid "+ Add new image"
4499
+ msgstr "+ Añadir nueva imagen"
4500
+
4501
+ #: inc/libraries/meta-box/inc/fields/map.php:43
4502
+ msgid "Find Address"
4503
+ msgstr "Encontrar dirección"
4504
+
4505
+ #: inc/libraries/meta-box/inc/fields/oembed.php:49
4506
+ msgid "Embed HTML not available."
4507
+ msgstr "No disponible"
4508
+
4509
+ #: inc/libraries/meta-box/inc/fields/plupload-image.php:96
4510
+ msgctxt "image upload"
4511
+ msgid "Drop images here"
4512
+ msgstr "Arrastrar imágenes aquí"
4513
+
4514
+ #: inc/libraries/meta-box/inc/fields/plupload-image.php:97
4515
+ msgctxt "image upload"
4516
+ msgid "or"
4517
+ msgstr "o"
4518
+
4519
+ #: inc/libraries/meta-box/inc/fields/plupload-image.php:98
4520
+ msgctxt "image upload"
4521
+ msgid "Select Files"
4522
+ msgstr "Selecciona archivos"
4523
+
4524
+ #: inc/libraries/meta-box/inc/fields/plupload-image.php:172
4525
+ msgctxt "image upload"
4526
+ msgid "Allowed Image Files"
4527
+ msgstr "Archivos de imagen permitido"
4528
+
4529
+ #: inc/libraries/meta-box/inc/fields/post.php:46
4530
+ msgid "Post"
4531
+ msgstr "Publicar"
4532
+
4533
+ #: inc/libraries/meta-box/inc/fields/post.php:59
4534
+ #: inc/libraries/meta-box/inc/fields/taxonomy.php:36
4535
+ #: inc/libraries/meta-box/inc/fields/user.php:56
4536
+ #, php-format
4537
+ msgid "Select a %s"
4538
+ msgstr "Selecciona un %s"
4539
+
4540
+ #: inc/libraries/meta-box/inc/fields/user.php:48
4541
+ msgid "User"
4542
+ msgstr "Usuario"
4543
+
4544
+ #: inc/order/class-lp-order.php:125
4545
+ msgid "Error! Update order failed"
4546
+ msgstr "¡Error! Falló la actualización de la orden"
4547
+
4548
+ #: inc/order/class-lp-order.php:372 inc/order/lp-order-functions.php:16
4549
+ msgid "Free Payment"
4550
+ msgstr "Gratuito"
4551
+
4552
+ #: inc/order/class-lp-order.php:446
4553
+ #, php-format
4554
+ msgctxt "full name"
4555
+ msgid "%1$s"
4556
+ msgstr ""
4557
+
4558
+ #: inc/order/lp-order-functions.php:37
4559
+ msgid "Order on"
4560
+ msgstr "Ordenar por"
4561
+
4562
+ #: inc/order/lp-order-functions.php:44
4563
+ msgid "Invalid order status"
4564
+ msgstr "Estado de la Órden Inválida"
4565
+
4566
+ #: inc/order/lp-order-functions.php:655
4567
+ msgctxt "Order status"
4568
+ msgid "Pending"
4569
+ msgstr "Pendiente"
4570
+
4571
+ #: inc/order/lp-order-functions.php:670
4572
+ msgid ""
4573
+ "Order received in case user buy a course but doesn't finalise the order."
4574
+ msgstr ""
4575
+ "Orden recibida en caso que el usuario compre un curso, pero no finaliza el "
4576
+ "pedido."
4577
+
4578
+ #: inc/order/lp-order-functions.php:671
4579
+ msgid "Payment failed or was declined (unpaid)."
4580
+ msgstr "Error en el pago o se ha rechazado (sin pagar)."
4581
+
4582
+ #: inc/order/lp-order-functions.php:672
4583
+ msgid "Payment received and the order is awaiting fulfillment."
4584
+ msgstr "Pago recibido la orden se esta procesando."
4585
+
4586
+ #: inc/order/lp-order-functions.php:673
4587
+ msgid "Order fulfilled and complete."
4588
+ msgstr "Pedido recibido y completado."
4589
+
4590
+ #: inc/order/lp-order-functions.php:674
4591
+ msgid "Awaiting payment."
4592
+ msgstr "Esperando el pago."
4593
+
4594
+ #: inc/order/lp-order-functions.php:675
4595
+ msgid "The order is cancelled by an admin or the customer."
4596
+ msgstr "La orden está cancelada por un administrador o por el cliente."
4597
+
4598
+ #: inc/order/lp-order-functions.php:676
4599
+ msgid "Refunded is to indicate that the refund to the customer has been sent."
4600
+ msgstr ""
4601
+ "Reembolsado es para indicar que la devolución se le ha enviado al cliente ."
4602
+
4603
+ #: inc/order/lp-order-functions.php:716
4604
+ #, php-format
4605
+ msgid "You have enrolled in this course. <a href=\"%s\">Order details</a>"
4606
+ msgstr "Te has inscrito al curso. <a href=\"%s\">Detalles del pedido</a> ."
4607
+
4608
+ #: inc/question/abstract-lp-question.php:138
4609
+ #: inc/question/class-lp-question-multi-choice.php:62
4610
+ #: inc/question/class-lp-question-single-choice.php:129
4611
+ msgid "Option First"
4612
+ msgstr "Primera opción"
4613
+
4614
+ #: inc/question/abstract-lp-question.php:143
4615
+ #: inc/question/class-lp-question-multi-choice.php:67
4616
+ #: inc/question/class-lp-question-single-choice.php:134
4617
+ msgid "Option Seconds"
4618
+ msgstr "Segunda opción"
4619
+
4620
+ #: inc/question/abstract-lp-question.php:148
4621
+ #: inc/question/class-lp-question-multi-choice.php:72
4622
+ #: inc/question/class-lp-question-single-choice.php:139
4623
+ msgid "Option Third"
4624
+ msgstr "Tercera opción"
4625
+
4626
+ #: inc/question/abstract-lp-question.php:308
4627
+ #: inc/question/abstract-lp-question.php:319
4628
+ #: inc/question/abstract-lp-question.php:706
4629
+ #: inc/question/abstract-lp-question.php:717
4630
+ #, php-format
4631
+ msgid "Function %s should override from its child"
4632
+ msgstr "La función %s sobrescribirá a la función hijo"
4633
+
4634
+ #: inc/question/abstract-lp-question.php:683
4635
+ msgid "Change type of this question to"
4636
+ msgstr "Cambie el tipo de pregunta a"
4637
+
4638
+ #: inc/question/abstract-lp-question.php:685
4639
+ msgid "--Select type--"
4640
+ msgstr "-- Selecciona una opción --"
4641
+
4642
+ #: inc/question/class-lp-question-factory.php:261
4643
+ msgid "Option"
4644
+ msgstr "Opción"
4645
+
4646
+ #: inc/question/class-lp-question-factory.php:313
4647
+ msgid "True Or False"
4648
+ msgstr "Verdadero o falso"
4649
+
4650
+ #: inc/question/class-lp-question-factory.php:314
4651
+ msgid "Multi Choice"
4652
+ msgstr "Opción múltiple"
4653
+
4654
+ #: inc/question/class-lp-question-factory.php:315
4655
+ msgid "Single Choice"
4656
+ msgstr "Opcion unica"
4657
+
4658
+ #: inc/question/class-lp-question-multi-choice.php:158
4659
+ msgid "Add answer"
4660
+ msgstr "Añadir respuesta"
4661
+
4662
+ #: inc/question/class-lp-question-multi-choice.php:188
4663
+ msgid ""
4664
+ "No answer added to question or you must select at least one the answer is "
4665
+ "correct!"
4666
+ msgstr ""
4667
+ "No se añadió respuesta a la pregunta o debes establecer la respuesta "
4668
+ "correcta!"
4669
+
4670
+ #: inc/question/class-lp-question-single-choice.php:105
4671
+ msgid "No answer added to question or you must set an answer is correct!"
4672
+ msgstr ""
4673
+ "No se añadió respuesta a la pregunta o debes establecer la respuesta "
4674
+ "correcta!"
4675
+
4676
+ #: inc/question/class-lp-question-true-or-false.php:50
4677
+ msgid "True"
4678
+ msgstr "Verdadero"
4679
+
4680
+ #: inc/question/class-lp-question-true-or-false.php:55
4681
+ msgid "False"
4682
+ msgstr "Falso"
4683
+
4684
+ #: inc/quiz/class-lp-quiz-factory.php:118
4685
+ msgid "You need to login to take this quiz."
4686
+ msgstr "Necesitas iniciar sesión para hacer esta examen."
4687
+
4688
+ #: inc/quiz/class-lp-quiz-factory.php:127
4689
+ msgid "You can not start a quiz in preview mode."
4690
+ msgstr "No puede iniciar un examen en modo de vista previa."
4691
+
4692
+ #: inc/quiz/class-lp-quiz-factory.php:162
4693
+ msgid "You have already completed quiz"
4694
+ msgstr "Has completado este examen"
4695
+
4696
+ #: inc/quiz/class-lp-quiz-factory.php:174
4697
+ msgid "Error while finish quiz"
4698
+ msgstr "Error durante el examen final"
4699
+
4700
+ #: inc/quiz/class-lp-quiz-factory.php:211
4701
+ msgid "You quiz has finished automatically"
4702
+ msgstr "Tu examen ha terminado automáticamente"
4703
+
4704
+ #: inc/quiz/class-lp-quiz-factory.php:213
4705
+ msgid "You have finished quiz"
4706
+ msgstr "Ya ha finalizado la prueba"
4707
+
4708
+ #: inc/quiz/class-lp-quiz-factory.php:216
4709
+ msgid "Finish quiz failed"
4710
+ msgstr "Falla al terminar el examen"
4711
+
4712
+ #: inc/quiz/class-lp-quiz-factory.php:234
4713
+ msgid "Sorry! You can't retake quiz"
4714
+ msgstr "¡Lo siento! No puedes volver a hacer el examen"
4715
+
4716
+ #: inc/quiz/class-lp-quiz-factory.php:249
4717
+ msgid "You have retaken quiz"
4718
+ msgstr "Has vuelto a hacer este examen"
4719
+
4720
+ #: inc/quiz/class-lp-quiz-factory.php:252
4721
+ msgid "Retake quiz failed"
4722
+ msgstr "Retomar prueba falló"
4723
+
4724
+ #: inc/quiz/class-lp-quiz-factory.php:356
4725
+ #, php-format
4726
+ msgid ""
4727
+ "Action %s failed! Please contact site's administrator for more information."
4728
+ msgstr ""
4729
+ "Acción%s falló! Por favor, ponte en contacto con el administrador del sitio "
4730
+ "para obtener más información."
4731
+
4732
+ #: inc/quiz/class-lp-quiz.php:94
4733
+ msgid "Unlimited"
4734
+ msgstr "Ilimitado"
4735
+
4736
+ #: inc/shortcodes/profile-page.php:21
4737
+ msgid "This user is not available!"
4738
+ msgstr "¡Este usuario no está disponible!"
4739
+
4740
+ #: inc/shortcodes/featured-courses/templates/cards.php:77
4741
+ #: inc/shortcodes/featured-courses/templates/grids.php:85
4742
+ #: inc/shortcodes/featured-courses/templates/list.php:89
4743
+ #: inc/shortcodes/popular-courses/templates/cards.php:77
4744
+ #: inc/shortcodes/popular-courses/templates/grids.php:85
4745
+ #: inc/shortcodes/popular-courses/templates/list.php:89
4746
+ #: inc/shortcodes/recent-courses/templates/cards.php:77
4747
+ #: inc/shortcodes/recent-courses/templates/grids.php:85
4748
+ #: inc/shortcodes/recent-courses/templates/list.php:88
4749
+ msgid " students"
4750
+ msgstr " estudiantes"
4751
+
4752
+ #: inc/shortcodes/featured-courses/templates/cards.php:79
4753
+ #: inc/shortcodes/featured-courses/templates/grids.php:87
4754
+ #: inc/shortcodes/featured-courses/templates/list.php:91
4755
+ #: inc/shortcodes/popular-courses/templates/cards.php:79
4756
+ #: inc/shortcodes/popular-courses/templates/grids.php:87
4757
+ #: inc/shortcodes/popular-courses/templates/list.php:91
4758
+ #: inc/shortcodes/recent-courses/templates/cards.php:79
4759
+ #: inc/shortcodes/recent-courses/templates/grids.php:87
4760
+ #: inc/shortcodes/recent-courses/templates/list.php:90
4761
+ msgid " student"
4762
+ msgstr " estudiante"
4763
+
4764
+ #: inc/shortcodes/featured-courses/templates/cards.php:92
4765
+ #: inc/shortcodes/featured-courses/templates/grids.php:100
4766
+ #: inc/shortcodes/featured-courses/templates/list.php:104
4767
+ #: inc/shortcodes/popular-courses/templates/cards.php:92
4768
+ #: inc/shortcodes/popular-courses/templates/grids.php:100
4769
+ #: inc/shortcodes/popular-courses/templates/list.php:104
4770
+ #: inc/shortcodes/recent-courses/templates/cards.php:92
4771
+ #: inc/shortcodes/recent-courses/templates/grids.php:100
4772
+ #: inc/shortcodes/recent-courses/templates/list.php:103
4773
+ msgid " lessons"
4774
+ msgstr " lecciones"
4775
+
4776
+ #: inc/shortcodes/featured-courses/templates/cards.php:94
4777
+ #: inc/shortcodes/featured-courses/templates/grids.php:102
4778
+ #: inc/shortcodes/featured-courses/templates/list.php:106
4779
+ #: inc/shortcodes/popular-courses/templates/cards.php:94
4780
+ #: inc/shortcodes/popular-courses/templates/grids.php:102
4781
+ #: inc/shortcodes/popular-courses/templates/list.php:106
4782
+ #: inc/shortcodes/recent-courses/templates/cards.php:94
4783
+ #: inc/shortcodes/recent-courses/templates/grids.php:102
4784
+ #: inc/shortcodes/recent-courses/templates/list.php:105
4785
+ msgid " lesson"
4786
+ msgstr " lección"
4787
+
4788
+ #: inc/shortcodes/featured-courses/templates/cards.php:105
4789
+ #: inc/shortcodes/featured-courses/templates/grids.php:113
4790
+ #: inc/shortcodes/featured-courses/templates/list.php:117
4791
+ #: inc/shortcodes/popular-courses/templates/cards.php:105
4792
+ #: inc/shortcodes/popular-courses/templates/grids.php:113
4793
+ #: inc/shortcodes/popular-courses/templates/list.php:117
4794
+ #: inc/shortcodes/recent-courses/templates/cards.php:105
4795
+ #: inc/shortcodes/recent-courses/templates/grids.php:113
4796
+ #: inc/shortcodes/recent-courses/templates/list.php:116
4797
+ msgid "instructor: "
4798
+ msgstr "Mentor: "
4799
+
4800
+ #: inc/updates/_update-from-0.9.php:1177
4801
+ msgctxt "Permalink Slug"
4802
+ msgid "lesson-tag"
4803
+ msgstr "etiqueta-leccion"
4804
+
4805
+ #: inc/updates/_update-from-0.9.php:1196
4806
+ msgctxt "Permalink Slug"
4807
+ msgid "question-tag"
4808
+ msgstr "etiqueta-pregunta"
4809
+
4810
+ #: inc/user/abstract-lp-user.php:227
4811
+ msgid "Create quiz history need pass course ID"
4812
+ msgstr "Crear la historia concurso necesario pasar Identificación curso"
4813
+
4814
+ #: inc/user/abstract-lp-user.php:1117 inc/user/abstract-lp-user.php:1417
4815
+ #: inc/user/abstract-lp-user.php:1429
4816
+ #, php-format
4817
+ msgid "The role %s for user doesn't exists"
4818
+ msgstr "El rol %s para el usuario no existe"
4819
+
4820
+ #: inc/user/abstract-lp-user.php:1821
4821
+ msgid "You have already completed this lesson"
4822
+ msgstr "Has completado esta lección."
4823
+
4824
+ #: inc/user/class-lp-user-factory.php:43
4825
+ msgid "Every 3 Minutes"
4826
+ msgstr "cada 3 minutos"
4827
+
4828
+ #: inc/user/lp-user-functions.php:87
4829
+ msgctxt "User role"
4830
+ msgid "Instructor"
4831
+ msgstr "Instructor"
4832
+
4833
+ #: inc/user/lp-user-functions.php:304
4834
+ msgid "Want to be an instructor?"
4835
+ msgstr "Quieres ser un mentor?"
4836
+
4837
+ #: inc/user/lp-user-functions.php:579
4838
+ msgid "Only"
4839
+ msgstr "Sólo"
4840
+
4841
+ #: inc/user/lp-user-functions.php:579
4842
+ msgid "images accepted for upload"
4843
+ msgstr "Esperando carga"
4844
+
4845
+ #: inc/user/lp-user-functions.php:588
4846
+ msgid "Images must be under"
4847
+ msgstr "Las imágenes deben estar bajo"
4848
+
4849
+ #: inc/user/lp-user-functions.php:588
4850
+ msgid "MB in size"
4851
+ msgstr "MB de tamaño"
4852
+
4853
+ #: inc/user/lp-user-functions.php:596
4854
+ msgid "Please select an image for upload"
4855
+ msgstr "Selecciona una imagen."
4856
+
4857
+ #: inc/user/lp-user-functions.php:625
4858
+ msgid "Image is uploaded success"
4859
+ msgstr "Imagen se carga el éxito"
4860
+
4861
+ #: inc/user/lp-user-functions.php:625
4862
+ msgid "Error on upload image"
4863
+ msgstr "Error de carga de imágenes en"
4864
+
4865
+ #: inc/user/lp-user-functions.php:651 inc/user/lp-user-functions.php:684
4866
+ #: inc/user/lp-user-functions.php:701 inc/user/lp-user-functions.php:709
4867
+ msgid "Thumbnail of image profile not created"
4868
+ msgstr "Miniatura de imagen no creó el perfil"
4869
+
4870
+ #: inc/user/lp-user-functions.php:669
4871
+ msgid "Error on crop user picture profile "
4872
+ msgstr "Error en la creación del usuario "
4873
+
4874
+ #: inc/user/lp-user-functions.php:723
4875
+ msgid "Profile picture is changed"
4876
+ msgstr "foto de perfil cambiada"
4877
+
4878
+ #: inc/user/lp-user-functions.php:770
4879
+ msgid "Old password incorrect!"
4880
+ msgstr "La contraseña anterior es incorrecta"
4881
+
4882
+ #: inc/user/lp-user-functions.php:784
4883
+ msgid "Confirmation password incorrect!"
4884
+ msgstr "Contraseña incorrecta"
4885
+
4886
+ #: inc/user/lp-user-functions.php:803
4887
+ msgid "Your change is saved"
4888
+ msgstr "El cambio se ha guardado"
4889
+
4890
+ #: inc/user/lp-user-functions.php:812
4891
+ msgid "Error on update your profile info"
4892
+ msgstr "Error en la actualización de su perfil info"
4893
+
4894
+ #: inc/user/lp-user-functions.php:928
4895
+ msgid "Please login to enroll this course"
4896
+ msgstr "Matricularse en este curso"
4897
+
4898
+ #: inc/user/lp-user-functions.php:946
4899
+ msgid "You have already finished course"
4900
+ msgstr "Ha finalizado este curso"
4901
+
4902
+ #: inc/user/lp-user-functions.php:949
4903
+ msgid "You have already enrolled in this course"
4904
+ msgstr "Ya te has inscrito en este curso"
4905
+
4906
+ #: inc/widgets/featured-courses/featured-course-widget.php:65
4907
+ msgid "Featured courses"
4908
+ msgstr "cursos destacados"
4909
+
4910
+ #: inc/widgets/featured-courses/featured-course-widget.php:76
4911
+ msgid "LearnPress - Featured Courses"
4912
+ msgstr "Cursos Destacados"
4913
+
4914
+ #: inc/widgets/featured-courses/form.php:8
4915
+ #: inc/widgets/popular-courses/form.php:8 inc/widgets/recent-courses/form.php:8
4916
+ msgid "Title:"
4917
+ msgstr "Titulo"
4918
+
4919
+ #: inc/widgets/featured-courses/form.php:17
4920
+ #: inc/widgets/popular-courses/form.php:17
4921
+ #: inc/widgets/recent-courses/form.php:17
4922
+ msgid "Number of posts:"
4923
+ msgstr "Número de publicaciones:"
4924
+
4925
+ #: inc/widgets/featured-courses/form.php:26
4926
+ #: inc/widgets/popular-courses/form.php:26
4927
+ #: inc/widgets/recent-courses/form.php:26
4928
+ msgid "CSS class:"
4929
+ msgstr ""
4930
+
4931
+ #: inc/widgets/featured-courses/form.php:35
4932
+ #: inc/widgets/popular-courses/form.php:35
4933
+ #: inc/widgets/recent-courses/form.php:35
4934
+ msgid "Choose template: "
4935
+ msgstr ""
4936
+
4937
+ #: inc/widgets/featured-courses/form.php:50
4938
+ #: inc/widgets/popular-courses/form.php:50
4939
+ #: inc/widgets/recent-courses/form.php:50
4940
+ msgid "Show description: "
4941
+ msgstr "Mostrar descripción: "
4942
+
4943
+ #: inc/widgets/featured-courses/form.php:58
4944
+ #: inc/widgets/popular-courses/form.php:58
4945
+ #: inc/widgets/recent-courses/form.php:58
4946
+ msgid "Description max length:"
4947
+ msgstr "Descripción longitud máxima:"
4948
+
4949
+ #: inc/widgets/featured-courses/form.php:67
4950
+ #: inc/widgets/popular-courses/form.php:67
4951
+ #: inc/widgets/recent-courses/form.php:67
4952
+ msgid "Show thumbnail: "
4953
+ msgstr "Mostrar Foto miniatura: "
4954
+
4955
+ #: inc/widgets/featured-courses/form.php:76
4956
+ #: inc/widgets/popular-courses/form.php:76
4957
+ #: inc/widgets/recent-courses/form.php:76
4958
+ msgid "Show Teacher name: "
4959
+ msgstr "Mostrar el nombre del profesor: "
4960
+
4961
+ #: inc/widgets/featured-courses/form.php:84
4962
+ #: inc/widgets/popular-courses/form.php:84
4963
+ #: inc/widgets/recent-courses/form.php:84
4964
+ msgid "Show number of lessons: "
4965
+ msgstr "Mostrar número de lecciones: "
4966
+
4967
+ #: inc/widgets/featured-courses/form.php:92
4968
+ #: inc/widgets/popular-courses/form.php:92
4969
+ #: inc/widgets/recent-courses/form.php:92
4970
+ msgid "Show enrolled number: "
4971
+ msgstr "Mostrar el número de inscritos: "
4972
+
4973
+ #: inc/widgets/featured-courses/form.php:100
4974
+ #: inc/widgets/popular-courses/form.php:100
4975
+ #: inc/widgets/recent-courses/form.php:100
4976
+ msgid "Show price: "
4977
+ msgstr "Mostrar precio: "
4978
+
4979
+ #: inc/widgets/featured-courses/form.php:110
4980
+ #: inc/widgets/popular-courses/form.php:110
4981
+ #: inc/widgets/recent-courses/form.php:110
4982
+ msgid "Bottom link: "
4983
+ msgstr ""
4984
+
4985
+ #: inc/widgets/featured-courses/form.php:116
4986
+ #: inc/widgets/popular-courses/form.php:116
4987
+ #: inc/widgets/recent-courses/form.php:116
4988
+ msgid "hide bottom link"
4989
+ msgstr ""
4990
+
4991
+ #: inc/widgets/featured-courses/form.php:119
4992
+ #: inc/widgets/popular-courses/form.php:119
4993
+ #: inc/widgets/recent-courses/form.php:119
4994
+ msgid "all courses"
4995
+ msgstr "todos los cursos"
4996
+
4997
+ #: inc/widgets/featured-courses/form.php:124
4998
+ #: inc/widgets/popular-courses/form.php:124
4999
+ #: inc/widgets/recent-courses/form.php:124
5000
+ msgid "Bottom link text: "
5001
+ msgstr "Boton de enlace inferior: "
5002
+
5003
+ #: inc/widgets/featured-courses/templates/default.php:26
5004
+ #: inc/widgets/popular-courses/templates/default.php:26
5005
+ #: inc/widgets/recent-courses/templates/default.php:26
5006
+ msgid "..."
5007
+ msgstr ""
5008
+
5009
+ #: inc/widgets/featured-courses/templates/default.php:42
5010
+ #: inc/widgets/popular-courses/templates/default.php:42
5011
+ #: inc/widgets/recent-courses/templates/default.php:42
5012
+ #, php-format
5013
+ msgid "%d students"
5014
+ msgstr "%d estudiantes"
5015
+
5016
+ #: inc/widgets/featured-courses/templates/default.php:42
5017
+ #: inc/widgets/popular-courses/templates/default.php:42
5018
+ #: inc/widgets/recent-courses/templates/default.php:42
5019
+ #, php-format
5020
+ msgid "%d student"
5021
+ msgstr "%d estudiante"
5022
+
5023
+ #: inc/widgets/featured-courses/templates/default.php:50
5024
+ #: inc/widgets/popular-courses/templates/default.php:50
5025
+ #: inc/widgets/recent-courses/templates/default.php:50
5026
+ #, php-format
5027
+ msgid "%d lessons"
5028
+ msgstr "%d lecciones"
5029
+
5030
+ #: inc/widgets/featured-courses/templates/default.php:50
5031
+ #: inc/widgets/popular-courses/templates/default.php:50
5032
+ #: inc/widgets/recent-courses/templates/default.php:50
5033
+ #, php-format
5034
+ msgid "%d lesson"
5035
+ msgstr "%d leccion"
5036
+
5037
+ #: inc/widgets/popular-courses/popular-course-widget.php:65
5038
+ msgid "Popular courses"
5039
+ msgstr "Cursos populares"
5040
+
5041
+ #: inc/widgets/popular-courses/popular-course-widget.php:76
5042
+ msgid "LearnPress - Popular Courses"
5043
+ msgstr "Cursos populares"
5044
+
5045
+ #: inc/widgets/recent-courses/recent-course-widget.php:47
5046
+ msgid "Display most recent courses"
5047
+ msgstr "Mostrar cursos más recientes"
5048
+
5049
+ #: inc/widgets/recent-courses/recent-course-widget.php:65
5050
+ msgid "Recent courses"
5051
+ msgstr "Cursos recientes"
5052
+
5053
+ #: inc/widgets/recent-courses/recent-course-widget.php:76
5054
+ msgid "LearnPress - Recent Courses"
5055
+ msgstr "Cursos recientes"
5056
+
5057
+ #: templates/content-archive-course.php:35
5058
+ msgid "No course found."
5059
+ msgstr "Curso no encontrado"
5060
+
5061
+ #: templates/search-form.php:18
5062
+ msgid "Search course..."
5063
+ msgstr "Buscar curso.."
5064
+
5065
+ #: templates/search-form.php:20
5066
+ msgid "Search"
5067
+ msgstr "Buscar"
5068
+
5069
+ #: templates/cart/empty-cart.php:12
5070
+ msgid "Your cart is currently empty."
5071
+ msgstr "Tu lista esta vacía."
5072
+
5073
+ #: templates/cart/form.php:70
5074
+ msgid "Remove this course"
5075
+ msgstr "Eliminar este curso"
5076
+
5077
+ #: templates/cart/form.php:96 templates/checkout/review-order.php:59
5078
+ #: templates/order/order-details.php:50
5079
+ msgid "Subtotal"
5080
+ msgstr ""
5081
+
5082
+ #: templates/checkout/form-logged-in.php:22
5083
+ #, php-format
5084
+ msgid "Logged in as <a href=\"%1$s\">%2$s</a>."
5085
+ msgstr "Conectado como <a href=\"%1$s\">%2$s</a>."
5086
+
5087
+ #: templates/checkout/form-logged-in.php:27
5088
+ msgid "Log out of this account"
5089
+ msgstr "Desconectarse"
5090
+
5091
+ #: templates/checkout/form-logged-in.php:27
5092
+ msgid "Log out &raquo;"
5093
+ msgstr "Salir &raquo;"
5094
+
5095
+ #: templates/checkout/form-login.php:18
5096
+ msgid "Returning customer"
5097
+ msgstr "Cliente recurrente"
5098
+
5099
+ #: templates/checkout/form-login.php:19
5100
+ msgid "I am a returning customer"
5101
+ msgstr "Soy un usuario ya registrado"
5102
+
5103
+ #: templates/checkout/form-login.php:48
5104
+ msgid "Login"
5105
+ msgstr "Iniciar sesión"
5106
+
5107
+ #: templates/checkout/form-register.php:18
5108
+ msgid "New Customer"
5109
+ msgstr "Nuevo Cliente"
5110
+
5111
+ #: templates/checkout/form-register.php:19
5112
+ msgid "Register Account"
5113
+ msgstr "Registrar Cuenta"
5114
+
5115
+ #: templates/checkout/form-register.php:21
5116
+ msgid "Continue"
5117
+ msgstr "Continuar"
5118
+
5119
+ #: templates/checkout/form-register.php:22
5120
+ #, php-format
5121
+ msgid ""
5122
+ "By creating an account you will be able to keep track of the course's "
5123
+ "progress you have previously enrolled.<a href=\"%s\">%s</a>"
5124
+ msgstr ""
5125
+ "Al crear una cuenta podrás realizar un seguimiento de progreso del curso al "
5126
+ "que te has inscrito previamente. <a href=\"%s\">%s</a>"
5127
+
5128
+ #: templates/checkout/order-comment.php:12
5129
+ msgid "Additional Information"
5130
+ msgstr "Información Adicional"
5131
+
5132
+ #: templates/checkout/order-received.php:16
5133
+ #: templates/checkout/order-received.php:52 templates/order/confirm.php:32
5134
+ #: templates/order/confirm.php:67
5135
+ msgid "Thank you. Your order has been received."
5136
+ msgstr "Gracias! Hemos recibido tu pedido"
5137
+
5138
+ #: templates/checkout/order-received.php:20
5139
+ msgid "Order Number"
5140
+ msgstr "Número de pedido"
5141
+
5142
+ #: templates/checkout/order-received.php:39 templates/checkout/payment.php:14
5143
+ msgid "Payment Method"
5144
+ msgstr "Método de Pago"
5145
+
5146
+ #: templates/checkout/payment.php:15
5147
+ msgid "Place order"
5148
+ msgstr "Realizar pedido"
5149
+
5150
+ #: templates/checkout/payment.php:26
5151
+ msgid "No payment methods is available."
5152
+ msgstr "Ningún método de pago esta disponible"
5153
+
5154
+ #: templates/checkout/review-order.php:14
5155
+ msgid "Your order"
5156
+ msgstr "Tu orden"
5157
+
5158
+ #: templates/content-lesson/description.php:25
5159
+ msgid "This lesson has no content"
5160
+ msgstr "Esta lección no tiene contenido"
5161
+
5162
+ #: templates/content-lesson/__complete-button.php:66
5163
+ #: templates/single-course/content-item-lp_lesson.php:33
5164
+ msgid "Complete"
5165
+ msgstr "Completo"
5166
+
5167
+ #: templates/content-lesson/__prev-button.php:11
5168
+ msgid "Prev"
5169
+ msgstr "Anterior"
5170
+
5171
+ #: templates/content-question/explanation.php:19
5172
+ msgid "Explanation:"
5173
+ msgstr "Explicación:"
5174
+
5175
+ #: templates/content-question/hint.php:31 templates/content-quiz/buttons.php:41
5176
+ msgid "Hint"
5177
+ msgstr "Pista"
5178
+
5179
+ #: templates/content-question/hint.php:32
5180
+ msgid "Hint:"
5181
+ msgstr "Consejo:"
5182
+
5183
+ #: templates/content-quiz/buttons.php:39
5184
+ msgid "Check"
5185
+ msgstr "Checar"
5186
+
5187
+ #: templates/content-quiz/buttons.php:53 templates/single-course/buttons.php:26
5188
+ msgid "Retake"
5189
+ msgstr "Retomar"
5190
+
5191
+ #: templates/content-quiz/buttons.php:63
5192
+ msgid "Start Quiz"
5193
+ msgstr "Comenzar Examen"
5194
+
5195
+ #: templates/content-quiz/buttons.php:73
5196
+ msgid "Finish Quiz"
5197
+ msgstr "Finalizar Examen"
5198
+
5199
+ #: templates/content-quiz/history.php:26
5200
+ #, php-format
5201
+ msgid "Other results (newest %d items)"
5202
+ msgstr "Otros resultados (%d elementos más actuales)"
5203
+
5204
+ #: templates/content-quiz/history.php:44
5205
+ msgid "Time"
5206
+ msgstr "Horario"
5207
+
5208
+ #: templates/content-quiz/history.php:45
5209
+ msgid "Result"
5210
+ msgstr "Resultado"
5211
+
5212
+ #: templates/content-quiz/history.php:70
5213
+ msgid "No history found!"
5214
+ msgstr "No hay historial"
5215
+
5216
+ #: templates/content-quiz/intro.php:26
5217
+ msgid "Attempts allowed:"
5218
+ msgstr "Intentos permitidos:"
5219
+
5220
+ #: templates/content-quiz/intro.php:30
5221
+ msgid "Duration:"
5222
+ msgstr "Duración:"
5223
+
5224
+ #: templates/content-quiz/intro.php:34
5225
+ msgid "Passing grade:"
5226
+ msgstr "Pasar grado"
5227
+
5228
+ #: templates/content-quiz/intro.php:38
5229
+ msgid "Questions:"
5230
+ msgstr "Preguntas:"
5231
+
5232
+ #: templates/content-quiz/preview-mode.php:15
5233
+ msgid "You are currently viewing quiz in preview mode."
5234
+ msgstr "Ahora mismo estás viendo el examen en el modo de vista previa"
5235
+
5236
+ #: templates/content-quiz/questions.php:20
5237
+ msgid "List of questions"
5238
+ msgstr "Lista de preguntas"
5239
+
5240
+ #: templates/content-quiz/questions.php:58
5241
+ msgid "This quiz hasn't got any questions"
5242
+ msgstr "Este examen no tiene preguntas."
5243
+
5244
+ #: templates/content-quiz/result.php:27
5245
+ #, php-format
5246
+ msgid "You have reached %d of %d points (%s)"
5247
+ msgstr "Has llegado a %d de %d puntos (%s)"
5248
+
5249
+ #: templates/content-quiz/result.php:30
5250
+ #, php-format
5251
+ msgid "Correct %d (%0.0f%%)"
5252
+ msgstr "Correcta %d (% 0.0f%%)"
5253
+
5254
+ #: templates/content-quiz/result.php:31
5255
+ #, php-format
5256
+ msgid "Wrong %d (%0.0f%%)"
5257
+ msgstr "Incorrecta %d (%0.0f%%)"
5258
+
5259
+ #: templates/content-quiz/result.php:32
5260
+ #, php-format
5261
+ msgid "Empty %d (%0.0f%%)"
5262
+ msgstr "Vacíos %d (%0.0f%%)"
5263
+
5264
+ #: templates/content-quiz/result.php:46
5265
+ #, php-format
5266
+ msgid "Your time: %s"
5267
+ msgstr "Tu tiempo: %s"
5268
+
5269
+ #: templates/content-quiz/result.php:51
5270
+ #, php-format
5271
+ msgid "Your quiz grade <span class=\"%s\">%s</span>"
5272
+ msgstr "Tu calificación <span class=\"%s\">%s</span>"
5273
+
5274
+ #: templates/content-quiz/result.php:53 templates/content-quiz/result.php:55
5275
+ #, php-format
5276
+ msgid "Quiz requirement <span>%s</span>"
5277
+ msgstr "Requisito de examen <span>%s</span>"
5278
+
5279
+ #: templates/emails/order-items-table.php:36
5280
+ #: templates/emails/plain/order-items-table.php:24
5281
+ #, php-format
5282
+ msgid "Quantity: %s"
5283
+ msgstr "Cantidad: %s"
5284
+
5285
+ #: templates/emails/order-items-table.php:39
5286
+ #: templates/emails/plain/order-items-table.php:26
5287
+ #, php-format
5288
+ msgid "Cost: %s"
5289
+ msgstr "Costo: %s"
5290
+
5291
+ #: templates/global/become-teacher-form.php:12
5292
+ msgid "Submitting..."
5293
+ msgstr "Enviando…"
5294
+
5295
+ #: templates/global/restrict-access.php:18
5296
+ msgid ""
5297
+ "You have no permission to view this area. Please contact site's "
5298
+ "administrators for more details."
5299
+ msgstr "Lo sentimos. No tienes permiso para ver esta página."
5300
+
5301
+ #: templates/order/confirm.php:14
5302
+ msgid ""
5303
+ "Unfortunately your order cannot be processed as the originating bank/"
5304
+ "merchant has declined your transaction."
5305
+ msgstr ""
5306
+ "Desgraciadamente, tu pedido no puede procesarse; el banco/comercio ha "
5307
+ "rechazado tu transacción. Por favor, intenta realizar la compra de nuevo."
5308
+
5309
+ #: templates/order/confirm.php:18
5310
+ msgid "Please attempt your purchase again or go to your account page."
5311
+ msgstr "Intente su compra de nuevo o vaya a la página de su cuenta."
5312
+
5313
+ #: templates/order/confirm.php:20
5314
+ msgid "Please attempt your purchase again."
5315
+ msgstr "Intente su compra de nuevo."
5316
+
5317
+ #: templates/order/confirm.php:24
5318
+ msgid "Pay"
5319
+ msgstr "Pagar"
5320
+
5321
+ #: templates/order/confirm.php:26
5322
+ msgid "My Account"
5323
+ msgstr "Mi cuenta"
5324
+
5325
+ #: templates/order/confirm.php:36
5326
+ msgid "Order Number:"
5327
+ msgstr "Número de pedido:"
5328
+
5329
+ #: templates/order/confirm.php:40
5330
+ msgid "Date:"
5331
+ msgstr "Fecha:"
5332
+
5333
+ #: templates/order/confirm.php:44
5334
+ msgid "Total:"
5335
+ msgstr "Total:"
5336
+
5337
+ #: templates/order/confirm.php:49
5338
+ msgid "Payment Method:"
5339
+ msgstr "Método de pago:"
5340
+
5341
+ #: templates/order/confirm.php:54
5342
+ msgid "Status:"
5343
+ msgstr "Estado:"
5344
+
5345
+ #: templates/order/order-details.php:37
5346
+ msgid "Free!"
5347
+ msgstr "Grátis!"
5348
+
5349
+ #: templates/profile/info.php:29
5350
+ msgid "Edit Profile"
5351
+ msgstr "Editar Perfil"
5352
+
5353
+ #: templates/profile/info.php:30
5354
+ msgid "Logout"
5355
+ msgstr "Cerrar Sesión"
5356
+
5357
+ #: templates/profile/order-details.php:13
5358
+ msgid "My Profile"
5359
+ msgstr "Mi Perfil"
5360
+
5361
+ #: templates/profile/private-area.php:8
5362
+ msgid "This is private area. Please login to view this."
5363
+ msgstr "Esta es zona privada. Por favor, regístrate para ver esto."
5364
+
5365
+ #: templates/profile/tabs/edit.php:31
5366
+ msgid "About Yourself"
5367
+ msgstr "Cuéntanos más sobre ti"
5368
+
5369
+ #: templates/profile/tabs/edit.php:33
5370
+ msgid "Profile Picture"
5371
+ msgstr "Foto de perfil"
5372
+
5373
+ #: templates/profile/tabs/edit.php:44
5374
+ msgid "Change Picture"
5375
+ msgstr "Cambiar imagen"
5376
+
5377
+ #: templates/profile/tabs/edit.php:46
5378
+ msgid "Gravatar"
5379
+ msgstr ""
5380
+
5381
+ #: templates/profile/tabs/edit.php:47
5382
+ msgid "Picture"
5383
+ msgstr "Imagen"
5384
+
5385
+ #: templates/profile/tabs/edit.php:51
5386
+ msgid "Use Gravatar"
5387
+ msgstr "Usar Gravatar"
5388
+
5389
+ #: templates/profile/tabs/edit.php:53
5390
+ msgid "Use Picture"
5391
+ msgstr "Imagen"
5392
+
5393
+ #: templates/profile/tabs/edit.php:55 templates/profile/tabs/edit.php:63
5394
+ msgid "Upload Picture"
5395
+ msgstr "Cargar imagen"
5396
+
5397
+ #: templates/profile/tabs/edit.php:64
5398
+ msgid ""
5399
+ "Please use an image that's at least 250px in width, 250px in height and "
5400
+ "under 2MB in size"
5401
+ msgstr "Utiliza una imagen de al menos 250px de ancho y 250px de alto."
5402
+
5403
+ #: templates/profile/tabs/edit.php:77
5404
+ msgid "Choose File"
5405
+ msgstr "Subir archivo"
5406
+
5407
+ #: templates/profile/tabs/edit.php:78
5408
+ msgid "Apply Changes"
5409
+ msgstr "Aplicar cambios"
5410
+
5411
+ #: templates/profile/tabs/edit.php:87
5412
+ msgid "Biographical Info"
5413
+ msgstr "Información Personal"
5414
+
5415
+ #: templates/profile/tabs/edit.php:89
5416
+ msgid ""
5417
+ "Share a little biographical information to fill out your profile. This may "
5418
+ "be shown publicly."
5419
+ msgstr ""
5420
+ "Comparte una breve información biográfica para llenar tu perfil. Esto puede "
5421
+ "ser mostrado públicamente."
5422
+
5423
+ #: templates/profile/tabs/edit.php:95
5424
+ msgid "First Name"
5425
+ msgstr "Nombre"
5426
+
5427
+ #: templates/profile/tabs/edit.php:100
5428
+ msgid "Last Name"
5429
+ msgstr "Apellidos"
5430
+
5431
+ #: templates/profile/tabs/edit.php:106
5432
+ msgid "(required)"
5433
+ msgstr "(requerido)"
5434
+
5435
+ #: templates/profile/tabs/edit.php:112
5436
+ msgid "Display name publicly as"
5437
+ msgstr "Mostrar nombre"
5438
+
5439
+ #: templates/profile/tabs/edit.php:147
5440
+ msgid "Account Management"
5441
+ msgstr "Gestión de Cuentas"
5442
+
5443
+ #: templates/profile/tabs/edit.php:149
5444
+ msgid "Change Password"
5445
+ msgstr "Cambiar Contraseña"
5446
+
5447
+ #: templates/profile/tabs/edit.php:153
5448
+ msgid "Old Password"
5449
+ msgstr "Contraseña Anterior"
5450
+
5451
+ #: templates/profile/tabs/edit.php:156
5452
+ msgid "New Password"
5453
+ msgstr "Nueva Contraseña"
5454
+
5455
+ #: templates/profile/tabs/edit.php:159
5456
+ msgid "Confirmation password"
5457
+ msgstr "Confirmación de contraseña"
5458
+
5459
+ #: templates/profile/tabs/edit.php:161
5460
+ msgid "Type your new password again."
5461
+ msgstr "Vuelve a escribir la contraseña."
5462
+
5463
+ #: templates/profile/tabs/edit.php:169
5464
+ msgid "Update Profile"
5465
+ msgstr "Actualizar perfil"
5466
+
5467
+ #: templates/profile/tabs/orders.php:19
5468
+ msgid "Action"
5469
+ msgstr "Acción"
5470
+
5471
+ #: templates/profile/tabs/orders.php:54
5472
+ msgid "You have not got any orders yet!"
5473
+ msgstr "No tienes ningún pedido todavía!"
5474
+
5475
+ #: templates/profile/tabs/quizzes.php:27
5476
+ msgid "You haven't started any quiz!"
5477
+ msgstr "No has iniciado ningún examen!"
5478
+
5479
+ #: templates/profile/tabs/courses/all.php:40
5480
+ msgid "You haven't got any courses yet!"
5481
+ msgstr "No tienes ningún curso publicado todavía!"
5482
+
5483
+ #: templates/profile/tabs/courses/finished.php:38
5484
+ msgid "You haven't finished any courses yet!"
5485
+ msgstr "No has terminado todavía ningún curso!"
5486
+
5487
+ #: templates/profile/tabs/courses/learning.php:38
5488
+ msgid "You haven't got any learning courses yet!"
5489
+ msgstr "No tienes ningún curso de aprendizaje todavía!"
5490
+
5491
+ #: templates/profile/tabs/courses/own.php:49
5492
+ msgid "You haven't got any published courses yet!"
5493
+ msgstr "No tienes ningún curso publicado todavía!"
5494
+
5495
+ #: templates/profile/tabs/courses/progress.php:41
5496
+ #: templates/single-course/progress.php:69
5497
+ #: templates/single-course/students-list.php:79
5498
+ #, php-format
5499
+ msgid "Passing condition: %s%%"
5500
+ msgstr "Valor para pasar: %s%%"
5501
+
5502
+ #: templates/profile/tabs/courses/purchased.php:38
5503
+ msgid "You haven't purchased any courses yet!"
5504
+ msgstr "No tienes ningún curso comprado todavía!"
5505
+
5506
+ #: templates/single-course/buttons.php:24
5507
+ msgid "Buy this course"
5508
+ msgstr "Tomar este Curso"
5509
+
5510
+ #: templates/single-course/buttons.php:25
5511
+ msgid "Enroll"
5512
+ msgstr "Inscribir"
5513
+
5514
+ #: templates/single-course/buttons.php:43
5515
+ #, php-format
5516
+ msgid "Retake course (+%d)"
5517
+ msgstr "Repetir curso (+%d)"
5518
+
5519
+ #: templates/single-course/buttons.php:98
5520
+ msgid "You have purchased this course. Please wait for approval."
5521
+ msgstr "Ya has comprado este curso. Por favor, espera la aprobación"
5522
+
5523
+ #: templates/single-course/buttons.php:100
5524
+ msgid "Sorry, you can not purchase this course"
5525
+ msgstr "¡Lo sentimos! No puedes inscribirte en este curso"
5526
+
5527
+ #: templates/single-course/content-item-lp_quiz.php:55
5528
+ msgid "No questions"
5529
+ msgstr "Sin preguntas."
5530
+
5531
+ #: templates/single-course/content-item-only.php:9
5532
+ #: templates/single-course/progress.php:35
5533
+ #, php-format
5534
+ msgid "%d of %d items"
5535
+ msgstr "%d de %d elementos"
5536
+
5537
+ #: templates/single-course/content-item.php:32
5538
+ msgid "Edit this item"
5539
+ msgstr "Editar este elemento"
5540
+
5541
+ #: templates/single-course/content-protected.php:14
5542
+ #, php-format
5543
+ msgid ""
5544
+ "This content is protected, please <a href=\"%s\">login</a> and enroll course "
5545
+ "to view this content"
5546
+ msgstr ""
5547
+ "Este contenido está protegido, por favor <a href=\"%s\">inicia sesión</a>e "
5548
+ "inscríbete en el curso para ver este contenido"
5549
+
5550
+ #: templates/single-course/curriculum.php:41
5551
+ #: templates/single-course/tabs/curriculum.php:41
5552
+ msgid "Curriculum is empty"
5553
+ msgstr "Curriculum está vacío"
5554
+
5555
+ #: templates/single-course/description.php:22
5556
+ msgid "Course Description"
5557
+ msgstr "Descripción del curso"
5558
+
5559
+ #: templates/single-course/instructor.php:20
5560
+ msgid "Instructor: "
5561
+ msgstr "Instructor: "
5562
+
5563
+ #: templates/single-course/progress.php:25
5564
+ msgid "Your results"
5565
+ msgstr "Tus resultados"
5566
+
5567
+ #: templates/single-course/progress.php:25
5568
+ msgid "Learning progress"
5569
+ msgstr "Progreso de aprendizaje"
5570
+
5571
+ #: templates/single-course/progress.php:33
5572
+ msgid "Items completed"
5573
+ msgstr "Artículos completados"
5574
+
5575
+ #: templates/single-course/progress.php:47
5576
+ msgid "Course results"
5577
+ msgstr "Resultados del curso"
5578
+
5579
+ #: templates/single-course/progress.php:50
5580
+ msgid "Evaluated by results of final quiz"
5581
+ msgstr "Evaluado por resultados de examen final"
5582
+
5583
+ #: templates/single-course/progress.php:52
5584
+ msgid "Evaluated by average results of quizzes"
5585
+ msgstr "Evaluados por el promedio de los examenes del curso"
5586
+
5587
+ #: templates/single-course/progress.php:54
5588
+ msgid "Evaluated by items completed"
5589
+ msgstr "Evaluado por elementos terminados"
5590
+
5591
+ #: templates/single-course/students-list.php:16
5592
+ msgid "Students Enrolled"
5593
+ msgstr "Estudiantes Inscritos"
5594
+
5595
+ #: templates/single-course/students-list.php:33
5596
+ msgid "Student filter"
5597
+ msgstr "filtro estudiante"
5598
+
5599
+ #: templates/single-course/students-list.php:92
5600
+ #, php-format
5601
+ msgid "one student enrolled."
5602
+ msgid_plural "%s students enrolled."
5603
+ msgstr[0] ""
5604
+ msgstr[1] "un estudiante inscrito."
5605
+
5606
+ #: templates/single-course/students-list.php:98
5607
+ #, php-format
5608
+ msgid "One student enrolled."
5609
+ msgid_plural "%s students enrolled."
5610
+ msgstr[0] ""
5611
+ msgstr[1] "Un estudiante"
5612
+
5613
+ #: templates/single-course/students-list.php:100
5614
+ msgid "No student enrolled."
5615
+ msgstr "Ningún estudiante inscrito."
5616
+
5617
+ #: templates/single-course/tags.php:16
5618
+ msgid "Tags: "
5619
+ msgstr "Etiquetas: "
5620
+
5621
+ #: templates/single-course/section/content.php:34
5622
+ msgid "No items in this section"
5623
+ msgstr "No hay elementos en esta sección"
5624
+
5625
+ #: templates/single-course/section/item-meta.php:21
5626
+ msgid "Viewing"
5627
+ msgstr "Viendo"
5628
+
5629
+ #: templates/single-course/section/item-meta.php:36
5630
+ msgid "Not Completed"
5631
+ msgstr "Sin completar"
5632
+
5633
+ #: templates/single-course/section/item-meta.php:38
5634
+ msgid "Not Started"
5635
+ msgstr "Sin Iniciar"
5636
+
5637
+ #: templates/single-course/section/title.php:26
5638
+ #, php-format
5639
+ msgid "%d/%d"
5640
+ msgstr ""
languages/learnpress.pot CHANGED
@@ -7,7 +7,7 @@
7
  #: inc/admin/views/meta-boxes/course/loop-item.php:48
8
  #: inc/admin/views/meta-boxes/course/loop-item.php:49
9
  #: inc/admin/views/meta-boxes/course/loop-section.php:37
10
- #: inc/custom-post-types/course.php:670 inc/custom-post-types/question.php:131
11
  #: inc/custom-post-types/quiz.php:133 inc/custom-post-types/quiz.php:134
12
  #: inc/question/class-lp-question-multi-choice.php:148
13
  #, fuzzy
@@ -15,7 +15,7 @@ msgid ""
15
  msgstr ""
16
  "Project-Id-Version: PACKAGE VERSION\n"
17
  "Report-Msgid-Bugs-To: \n"
18
- "POT-Creation-Date: 2017-01-06 10:44+0700\n"
19
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
20
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
21
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -112,6 +112,7 @@ msgstr ""
112
 
113
  #: inc/class-lp-ajax.php:532 inc/admin/lp-admin-functions.php:930
114
  #: inc/admin/views/statistics/orders.php:63
 
115
  #: templates/single-course/content-item-lp_lesson.php:24
116
  #: templates/single-course/section/item-meta.php:34
117
  msgid "Completed"
@@ -258,10 +259,10 @@ msgstr ""
258
  msgid "Ok"
259
  msgstr ""
260
 
261
- #: inc/class-lp-install.php:90 inc/lp-core-functions.php:1961
262
- #: inc/admin/class-lp-admin-ajax.php:849 inc/admin/class-lp-admin.php:181
263
  #: inc/admin/views/meta-boxes/course/loop-section.php:48
264
- #: inc/custom-post-types/course.php:740 templates/profile/tabs/orders.php:30
265
  msgid "Cancel"
266
  msgstr ""
267
 
@@ -292,76 +293,76 @@ msgstr ""
292
  msgid "Add-ons"
293
  msgstr ""
294
 
295
- #: inc/class-lp-shortcodes.php:158 inc/class-lp-shortcodes.php:327
296
  msgid "Invalid order!"
297
  msgstr ""
298
 
299
- #: inc/class-lp-shortcodes.php:209
300
  msgid "Please login to fill in this form."
301
  msgstr ""
302
 
303
- #: inc/class-lp-shortcodes.php:212
304
  msgid "You are a teacher now."
305
  msgstr ""
306
 
307
- #: inc/class-lp-shortcodes.php:215 inc/lp-core-functions.php:1407
308
  msgid "Your request has been sent! We will get in touch with you soon!"
309
  msgstr ""
310
 
311
- #: inc/class-lp-shortcodes.php:218
312
  msgid "Your role is allowed to create a course."
313
  msgstr ""
314
 
315
- #: inc/class-lp-shortcodes.php:230
316
  msgid "Become a Teacher"
317
  msgstr ""
318
 
319
- #: inc/class-lp-shortcodes.php:231
320
  msgid "Fill in your information and send us to become a teacher."
321
  msgstr ""
322
 
323
- #: inc/class-lp-shortcodes.php:232 templates/global/become-teacher-form.php:13
324
  msgid "Submit"
325
  msgstr ""
326
 
327
- #: inc/class-lp-shortcodes.php:233 templates/checkout/payment.php:16
328
  msgid "Processing"
329
  msgstr ""
330
 
331
- #: inc/class-lp-shortcodes.php:239
332
  msgid "Name"
333
  msgstr ""
334
 
335
- #: inc/class-lp-shortcodes.php:241
336
  msgid "Your name"
337
  msgstr ""
338
 
339
- #: inc/class-lp-shortcodes.php:245
340
  msgid "Email"
341
  msgstr ""
342
 
343
- #: inc/class-lp-shortcodes.php:247
344
  msgid "Your email address"
345
  msgstr ""
346
 
347
- #: inc/class-lp-shortcodes.php:251
348
  msgid "Phone"
349
  msgstr ""
350
 
351
- #: inc/class-lp-shortcodes.php:253
352
  msgid "Your phone number"
353
  msgstr ""
354
 
355
- #: inc/class-lp-shortcodes.php:289
356
  #, php-format
357
  msgid "The user %s is not available!"
358
  msgstr ""
359
 
360
- #: inc/class-lp-shortcodes.php:361
361
  msgid "Forgot password?"
362
  msgstr ""
363
 
364
- #: inc/class-lp-shortcodes.php:363
365
  msgid "Create new account"
366
  msgstr ""
367
 
@@ -380,8 +381,8 @@ msgstr ""
380
  msgid "Related Themes <span class=\"count\">(%s)</span>"
381
  msgstr ""
382
 
383
- #: inc/lp-add-on-functions.php:118 inc/lp-core-functions.php:2288
384
- #: inc/lp-core-functions.php:2687 inc/admin/lp-admin-actions.php:50
385
  #: inc/admin/lp-admin-functions.php:558 inc/admin/lp-admin-functions.php:723
386
  #: inc/admin/lp-admin-functions.php:925 inc/admin/sub-menus/tools.php:321
387
  #: inc/admin/views/statistics/courses.php:27
@@ -591,12 +592,12 @@ msgid " sales"
591
  msgstr ""
592
 
593
  #: inc/lp-add-on-functions.php:996 inc/lp-add-on-functions.php:1063
594
- #: inc/lp-core-functions.php:505
595
  msgid "Get it now"
596
  msgstr ""
597
 
598
  #: inc/lp-add-on-functions.php:997 inc/lp-add-on-functions.php:1064
599
- #: inc/lp-core-functions.php:506
600
  msgid "View Demo"
601
  msgstr ""
602
 
@@ -604,232 +605,234 @@ msgstr ""
604
  msgid "Other"
605
  msgstr ""
606
 
607
- #: inc/lp-core-functions.php:234 inc/lp-template-functions.php:1393
608
- #: inc/course/lp-course-functions.php:484 inc/custom-post-types/lesson.php:93
 
609
  msgid "Lesson"
610
  msgstr ""
611
 
612
- #: inc/lp-core-functions.php:235 inc/lp-template-functions.php:1383
 
613
  #: inc/admin/settings/class-lp-settings-pages.php:22
614
- #: inc/course/lp-course-functions.php:485
615
  #: inc/custom-post-types/question.php:244 inc/custom-post-types/quiz.php:91
616
  msgid "Quiz"
617
  msgstr ""
618
 
619
- #: inc/lp-core-functions.php:667
620
  msgid "<"
621
  msgstr ""
622
 
623
- #: inc/lp-core-functions.php:668
624
  msgid ">"
625
  msgstr ""
626
 
627
- #: inc/lp-core-functions.php:766
628
  msgid "Minute(s)"
629
  msgstr ""
630
 
631
- #: inc/lp-core-functions.php:767
632
  msgid "Hour(s)"
633
  msgstr ""
634
 
635
- #: inc/lp-core-functions.php:768
636
  msgid "Day(s)"
637
  msgstr ""
638
 
639
- #: inc/lp-core-functions.php:769
640
  msgid "Week(s)"
641
  msgstr ""
642
 
643
- #: inc/lp-core-functions.php:829 inc/lp-template-functions.php:697
644
  #: inc/admin/class-lp-profile.php:77 inc/admin/lp-admin-functions.php:299
645
  #: inc/admin/settings/class-lp-settings-courses.php:9
646
  #: inc/admin/settings/class-lp-settings-pages.php:105
647
  #: inc/admin/sub-menus/statistics.php:50 inc/admin/sub-menus/statistics.php:56
648
- #: inc/custom-post-types/course.php:451 inc/custom-post-types/course.php:453
649
  msgid "Courses"
650
  msgstr ""
651
 
652
- #: inc/lp-core-functions.php:835 inc/custom-post-types/course.php:1311
653
  msgid "Categories"
654
  msgstr ""
655
 
656
- #: inc/lp-core-functions.php:840 inc/custom-post-types/course.php:244
657
  msgid "Tags"
658
  msgstr ""
659
 
660
- #: inc/lp-core-functions.php:1008
661
  msgid "Left"
662
  msgstr ""
663
 
664
- #: inc/lp-core-functions.php:1009
665
  msgid "Right"
666
  msgstr ""
667
 
668
- #: inc/lp-core-functions.php:1010
669
  msgid "Left with space"
670
  msgstr ""
671
 
672
- #: inc/lp-core-functions.php:1011
673
  msgid "Right with space"
674
  msgstr ""
675
 
676
- #: inc/lp-core-functions.php:1279
677
  msgid "week(s)"
678
  msgstr ""
679
 
680
- #: inc/lp-core-functions.php:1283
681
  msgid "day(s)"
682
  msgstr ""
683
 
684
- #: inc/lp-core-functions.php:1288
685
  msgid "hour(s)"
686
  msgstr ""
687
 
688
- #: inc/lp-core-functions.php:1292
689
  msgid "min(s)"
690
  msgstr ""
691
 
692
- #: inc/lp-core-functions.php:1380
693
  msgid "Please enter your name"
694
  msgstr ""
695
 
696
- #: inc/lp-core-functions.php:1385
697
  msgid "Please enter your email address"
698
  msgstr ""
699
 
700
- #: inc/lp-core-functions.php:1392
701
  msgid "Please moderate"
702
  msgstr ""
703
 
704
- #: inc/lp-core-functions.php:1393
705
  #, php-format
706
  msgid "The user <a href=\"%s\">%s</a> wants to be a teacher."
707
  msgstr ""
708
 
709
- #: inc/lp-core-functions.php:1395
710
  #, php-format
711
  msgid "Name: %s"
712
  msgstr ""
713
 
714
- #: inc/lp-core-functions.php:1396
715
  #, php-format
716
  msgid "Email: %s"
717
  msgstr ""
718
 
719
- #: inc/lp-core-functions.php:1397
720
  #, php-format
721
  msgid "Phone: %s"
722
  msgstr ""
723
 
724
- #: inc/lp-core-functions.php:1398
725
  #, php-format
726
  msgid "Accept: %s"
727
  msgstr ""
728
 
729
- #: inc/lp-core-functions.php:1960 inc/admin/class-lp-admin.php:180
730
  msgid "OK"
731
  msgstr ""
732
 
733
- #: inc/lp-core-functions.php:1962 inc/admin/class-lp-admin.php:182
734
  #: inc/custom-post-types/quiz.php:223 inc/custom-post-types/quiz.php:234
735
  msgid "Yes"
736
  msgstr ""
737
 
738
- #: inc/lp-core-functions.php:1963 inc/admin/class-lp-admin.php:183
739
  #: inc/custom-post-types/quiz.php:179 inc/custom-post-types/quiz.php:222
740
  #: inc/custom-post-types/quiz.php:233
741
  msgid "No"
742
  msgstr ""
743
 
744
- #: inc/lp-core-functions.php:2289
745
  msgid "Learning"
746
  msgstr ""
747
 
748
- #: inc/lp-core-functions.php:2290 inc/custom-post-types/order.php:305
749
  msgid "Purchased"
750
  msgstr ""
751
 
752
- #: inc/lp-core-functions.php:2291 inc/lp-core-functions.php:2689
753
  msgid "Finished"
754
  msgstr ""
755
 
756
- #: inc/lp-core-functions.php:2292
757
  msgid "Own"
758
  msgstr ""
759
 
760
- #: inc/lp-core-functions.php:2397
761
  #, php-format
762
  msgid "Congrats! You've enrolled course \"%s\"."
763
  msgstr ""
764
 
765
- #: inc/lp-core-functions.php:2430
766
  msgid "Cart"
767
  msgstr ""
768
 
769
- #: inc/lp-core-functions.php:2434
770
  msgid "Enable cart"
771
  msgstr ""
772
 
773
- #: inc/lp-core-functions.php:2435
774
  msgid "Check this option to enable user purchase multiple courses at one time."
775
  msgstr ""
776
 
777
- #: inc/lp-core-functions.php:2441
778
  msgid "Add to cart redirect"
779
  msgstr ""
780
 
781
- #: inc/lp-core-functions.php:2442
782
  msgid "Redirect to checkout immediately after adding course to cart."
783
  msgstr ""
784
 
785
- #: inc/lp-core-functions.php:2448
786
  msgid "AJAX add to cart"
787
  msgstr ""
788
 
789
- #: inc/lp-core-functions.php:2449
790
  msgid "Using AJAX to add course to cart."
791
  msgstr ""
792
 
793
- #: inc/lp-core-functions.php:2455
794
  msgid "Cart page"
795
  msgstr ""
796
 
797
- #: inc/lp-core-functions.php:2580
798
  msgid "Are you sure you want to cancel order?"
799
  msgstr ""
800
 
801
- #: inc/lp-core-functions.php:2581
802
  msgid "Cancel Order"
803
  msgstr ""
804
 
805
- #: inc/lp-core-functions.php:2597
806
  msgid "Unknown error!"
807
  msgstr ""
808
 
809
- #: inc/lp-core-functions.php:2598
810
  msgid "Invalid field!"
811
  msgstr ""
812
 
813
- #: inc/lp-core-functions.php:2618
814
  #, php-format
815
  msgid "Order number <strong>%s</strong> not found"
816
  msgstr ""
817
 
818
- #: inc/lp-core-functions.php:2621
819
  msgid "Order cancelled by customer"
820
  msgstr ""
821
 
822
- #: inc/lp-core-functions.php:2624
823
  #, php-format
824
  msgid "Order number <strong>%s</strong> has been cancelled"
825
  msgstr ""
826
 
827
- #: inc/lp-core-functions.php:2627
828
  #, php-format
829
  msgid "Order number <strong>%s</strong> can not cancelled"
830
  msgstr ""
831
 
832
- #: inc/lp-core-functions.php:2688
833
  msgid "In Progress"
834
  msgstr ""
835
 
@@ -861,7 +864,7 @@ msgid "Edit"
861
  msgstr ""
862
 
863
  #: inc/lp-template-functions.php:1059
864
- #: inc/admin/settings/class-lp-settings-checkout.php:76
865
  msgid "Order received"
866
  msgstr ""
867
 
@@ -880,28 +883,33 @@ msgstr ""
880
  msgid "&nbsp;&ndash; Page %s"
881
  msgstr ""
882
 
883
- #: inc/lp-template-functions.php:1387
884
  msgid "Final"
885
  msgstr ""
886
 
887
- #: inc/lp-template-functions.php:1396 inc/custom-post-types/abstract.php:454
888
  #: inc/custom-post-types/lesson.php:211
889
  #: inc/libraries/meta-box/inc/fields/oembed.php:70
890
  #: templates/single-course/section/item-meta.php:23
891
  msgid "Preview"
892
  msgstr ""
893
 
894
- #: inc/lp-template-functions.php:1468
895
  msgid "Overview"
896
  msgstr ""
897
 
898
- #: inc/lp-template-functions.php:1476
899
  #: inc/admin/views/meta-boxes/course/curriculum.php:8
900
- #: inc/custom-post-types/course.php:531
901
  msgid "Curriculum"
902
  msgstr ""
903
 
904
- #: inc/lp-webhooks.php:78
 
 
 
 
 
905
  msgid "LearnPress webhook process Complete"
906
  msgstr ""
907
 
@@ -928,7 +936,7 @@ msgstr ""
928
  #: inc/quiz/class-lp-quiz-factory.php:127
929
  #: inc/quiz/class-lp-quiz-factory.php:162
930
  #: inc/quiz/class-lp-quiz-factory.php:174
931
- #: inc/quiz/class-lp-quiz-factory.php:356
932
  msgid "Error"
933
  msgstr ""
934
 
@@ -977,12 +985,12 @@ msgstr ""
977
  msgid "Verify nonce failed"
978
  msgstr ""
979
 
980
- #: inc/admin/class-lp-admin-ajax.php:745 inc/admin/class-lp-admin-ajax.php:970
981
  #: inc/admin/lp-admin-functions.php:132
982
  msgid "Edit Page"
983
  msgstr ""
984
 
985
- #: inc/admin/class-lp-admin-ajax.php:746 inc/admin/class-lp-admin-ajax.php:971
986
  #: inc/admin/lp-admin-functions.php:133
987
  msgid "View Page"
988
  msgstr ""
@@ -995,41 +1003,41 @@ msgstr ""
995
  msgid "Empty page name!"
996
  msgstr ""
997
 
998
- #: inc/admin/class-lp-admin-ajax.php:835
999
  msgid ""
1000
  "Something went wrong! Please try again or ask <a href=\"https://wordpress."
1001
  "org/support/\">support forums</a>."
1002
  msgstr ""
1003
 
1004
- #: inc/admin/class-lp-admin-ajax.php:848
1005
  msgid "Try again!"
1006
  msgstr ""
1007
 
1008
- #: inc/admin/class-lp-admin-ajax.php:874
1009
  msgid "Import sample data successes."
1010
  msgstr ""
1011
 
1012
- #: inc/admin/class-lp-admin-ajax.php:874
1013
  msgid "View courses"
1014
  msgstr ""
1015
 
1016
- #: inc/admin/class-lp-admin-ajax.php:878
1017
  msgid "Import sample data failed. Please try again!."
1018
  msgstr ""
1019
 
1020
- #: inc/admin/class-lp-admin-ajax.php:882
1021
  msgid ""
1022
  "Unknown error when installing/activating Import/Export addon. Please try "
1023
  "again!"
1024
  msgstr ""
1025
 
1026
- #: inc/admin/class-lp-admin-ajax.php:898 inc/admin/class-lp-admin-ajax.php:919
1027
- #: inc/admin/class-lp-admin-ajax.php:939
1028
  msgid ""
1029
  "You do not have sufficient permissions to deactivate plugins for this site."
1030
  msgstr ""
1031
 
1032
- #: inc/admin/class-lp-admin-ajax.php:1077
1033
  msgid " course has duplicated"
1034
  msgstr ""
1035
 
@@ -1360,7 +1368,7 @@ msgstr ""
1360
  #: inc/admin/views/statistics/orders.php:8
1361
  #: inc/admin/views/statistics/users.php:8
1362
  #: inc/admin/views/statistics/users.php:44
1363
- #: inc/custom-post-types/course.php:1301 inc/custom-post-types/course.php:1307
1364
  msgid "Students"
1365
  msgstr ""
1366
 
@@ -1383,7 +1391,7 @@ msgstr ""
1383
 
1384
  #: inc/admin/lp-admin-functions.php:743
1385
  #: inc/admin/views/statistics/courses.php:46
1386
- #: inc/course/abstract-lp-course.php:563 inc/custom-post-types/course.php:1359
1387
  #: inc/order/lp-order-functions.php:511
1388
  #: inc/shortcodes/featured-courses/templates/cards.php:61
1389
  #: inc/shortcodes/featured-courses/templates/grids.php:69
@@ -1541,23 +1549,19 @@ msgstr ""
1541
  msgid "Current Version"
1542
  msgstr ""
1543
 
1544
- #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:25
1545
  msgid "Total Raised"
1546
  msgstr ""
1547
 
1548
- #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:32
1549
- #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:41
1550
  #, php-format
1551
  msgid "%d order"
1552
  msgid_plural "%d orders"
1553
  msgstr[0] ""
1554
  msgstr[1] ""
1555
 
1556
- #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:47
1557
- msgid "Featured: "
1558
- msgstr ""
1559
-
1560
- #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:52
1561
  msgid "Created by: "
1562
  msgstr ""
1563
 
@@ -1655,7 +1659,7 @@ msgstr ""
1655
  msgid "Can not create a question"
1656
  msgstr ""
1657
 
1658
- #: inc/admin/pointers/pointers.php:66 inc/custom-post-types/course.php:536
1659
  #: templates/single-course/curriculum.php:16
1660
  msgid "Course Curriculum"
1661
  msgstr ""
@@ -1667,33 +1671,23 @@ msgid ""
1667
  msgstr ""
1668
 
1669
  #: inc/admin/settings/class-lp-settings-checkout.php:52
1670
- msgid "No checkout Free course"
1671
  msgstr ""
1672
 
1673
  #: inc/admin/settings/class-lp-settings-checkout.php:53
1674
- msgid ""
1675
- "Check this option to allow user to enroll course immediately without adding "
1676
- "to cart."
1677
  msgstr ""
1678
 
1679
  #: inc/admin/settings/class-lp-settings-checkout.php:59
1680
- msgid "Disable auto enroll"
1681
- msgstr ""
1682
-
1683
- #: inc/admin/settings/class-lp-settings-checkout.php:60
1684
- msgid "Disable auto enroll a user after they buy a course."
1685
- msgstr ""
1686
-
1687
- #: inc/admin/settings/class-lp-settings-checkout.php:66
1688
  msgid "Checkout page"
1689
  msgstr ""
1690
 
1691
- #: inc/admin/settings/class-lp-settings-checkout.php:72
1692
  msgid "Checkout Endpoints"
1693
  msgstr ""
1694
 
1695
  #: inc/admin/settings/class-lp-settings-courses.php:32
1696
- #: inc/custom-post-types/course.php:464
1697
  msgctxt "slug"
1698
  msgid "courses"
1699
  msgstr ""
@@ -1781,6 +1775,10 @@ msgstr ""
1781
  msgid "Single course permalink"
1782
  msgstr ""
1783
 
 
 
 
 
1784
  #: inc/admin/settings/class-lp-settings-emails.php:39
1785
  msgid "General options"
1786
  msgstr ""
@@ -1799,50 +1797,38 @@ msgid "Create option for instructors registration."
1799
  msgstr ""
1800
 
1801
  #: inc/admin/settings/class-lp-settings-general.php:39
1802
- msgid "Auto update post name"
1803
- msgstr ""
1804
-
1805
- #: inc/admin/settings/class-lp-settings-general.php:40
1806
- msgid ""
1807
- "The post's name will update along with the title when changes title of "
1808
- "lesson or quiz in course curriculum or question in quiz<br />The permalink "
1809
- "also is changed, therefore uncheck this if you don't want to change the "
1810
- "permalink"
1811
- msgstr ""
1812
-
1813
- #: inc/admin/settings/class-lp-settings-general.php:46
1814
  msgid "Currency"
1815
  msgstr ""
1816
 
1817
- #: inc/admin/settings/class-lp-settings-general.php:53
1818
  msgid "Currency position"
1819
  msgstr ""
1820
 
1821
- #: inc/admin/settings/class-lp-settings-general.php:60
1822
  msgid "Thousands Separator"
1823
  msgstr ""
1824
 
1825
- #: inc/admin/settings/class-lp-settings-general.php:67
1826
  msgid "Decimals Separator"
1827
  msgstr ""
1828
 
1829
- #: inc/admin/settings/class-lp-settings-general.php:74
1830
  msgid "Number of Decimals"
1831
  msgstr ""
1832
 
1833
- #: inc/admin/settings/class-lp-settings-general.php:81
1834
  msgid "Load css"
1835
  msgstr ""
1836
 
1837
- #: inc/admin/settings/class-lp-settings-general.php:85
1838
  msgid "Load default stylesheet for LearnPress"
1839
  msgstr ""
1840
 
1841
- #: inc/admin/settings/class-lp-settings-general.php:88
1842
  msgid "Debug mode"
1843
  msgstr ""
1844
 
1845
- #: inc/admin/settings/class-lp-settings-general.php:92
1846
  msgid "Turn on/off debug mode for developer"
1847
  msgstr ""
1848
 
@@ -1944,10 +1930,6 @@ msgstr ""
1944
  msgid "Ratio"
1945
  msgstr ""
1946
 
1947
- #: inc/admin/settings/class-lp-settings-pages.php:147
1948
- msgid "Crop"
1949
- msgstr ""
1950
-
1951
  #: inc/admin/settings/class-lp-settings-pages.php:154
1952
  msgid "Endpoints"
1953
  msgstr ""
@@ -2095,7 +2077,7 @@ msgstr ""
2095
  #: inc/admin/views/meta-boxes/quiz/question.php:36
2096
  #: inc/libraries/meta-box/inc/fields/file-input.php:38
2097
  #: inc/question/abstract-lp-question.php:653 templates/cart/form.php:72
2098
- #: templates/profile/tabs/edit/avatar.php:55
2099
  msgid "Remove"
2100
  msgstr ""
2101
 
@@ -2268,7 +2250,7 @@ msgid "Title"
2268
  msgstr ""
2269
 
2270
  #: inc/admin/views/meta-boxes/course/editor.php:62
2271
- #: inc/custom-post-types/course.php:1300 inc/custom-post-types/course.php:1306
2272
  msgid "Content"
2273
  msgstr ""
2274
 
@@ -2287,7 +2269,7 @@ msgstr ""
2287
  #: inc/admin/views/meta-boxes/course/loop-section.php:71
2288
  #: inc/admin/views/meta-boxes/quiz/js-template.php:6
2289
  #: inc/admin/views/meta-boxes/quiz/questions.php:36
2290
- #: inc/custom-post-types/course.php:456 inc/custom-post-types/lesson.php:97
2291
  #: inc/custom-post-types/order.php:419 inc/custom-post-types/question.php:100
2292
  msgid "Add New"
2293
  msgstr ""
@@ -2318,7 +2300,7 @@ msgid "Add new item here and press Enter"
2318
  msgstr ""
2319
 
2320
  #: inc/admin/views/meta-boxes/course/loop-item.php:49
2321
- #: inc/custom-post-types/course.php:405
2322
  msgid "Are you sure you want to remove this item?"
2323
  msgstr ""
2324
 
@@ -2375,7 +2357,7 @@ msgid "Select Quizzes"
2375
  msgstr ""
2376
 
2377
  #: inc/admin/views/meta-boxes/course/review-log.php:25
2378
- #: inc/custom-post-types/course.php:407
2379
  msgid "Your course is pending for reviewing"
2380
  msgstr ""
2381
 
@@ -2777,20 +2759,19 @@ msgstr ""
2777
  msgid "Plain text template"
2778
  msgstr ""
2779
 
2780
- #: inc/admin/views/settings/emails/email-template.php:44
2781
- #: inc/admin/views/settings/emails/_email-template.php:28
2782
  #, php-format
2783
  msgid ""
2784
  "This template has been overridden by your theme and can be found in: <code>"
2785
- "%s</code>. Please open the file in an editor program to edit"
2786
  msgstr ""
2787
 
2788
- #: inc/admin/views/settings/emails/email-template.php:68
2789
  msgid "Click on variables to add it into email content"
2790
  msgstr ""
2791
 
2792
- #: inc/admin/views/settings/emails/email-template.php:77
2793
- #: inc/admin/views/settings/emails/_email-template.php:70
2794
  #, php-format
2795
  msgid ""
2796
  "To override and edit this email template copy <code>%s</code> to your theme "
@@ -2945,22 +2926,29 @@ msgstr ""
2945
  msgid "Send email to user when the order is completed."
2946
  msgstr ""
2947
 
2948
- #: inc/admin/views/settings/emails/_email-template.php:55
 
 
 
 
 
 
 
2949
  #, php-format
2950
  msgid ""
2951
  "This template has been overridden by your theme and can be found in: <code>"
2952
  "%s</code>."
2953
  msgstr ""
2954
 
2955
- #: inc/admin/views/settings/emails/_email-template.php:60
2956
  msgid "Delete template file"
2957
  msgstr ""
2958
 
2959
- #: inc/admin/views/settings/emails/_email-template.php:75
2960
  msgid "Copy file to theme"
2961
  msgstr ""
2962
 
2963
- #: inc/admin/views/settings/emails/_email-template.php:81
2964
  msgid "File was not found."
2965
  msgstr ""
2966
 
@@ -3158,32 +3146,28 @@ msgstr ""
3158
  msgid "Sorry! This course is not purchasable."
3159
  msgstr ""
3160
 
3161
- #: inc/cart/class-lp-cart.php:222
3162
- msgid "Please login to continue process."
3163
- msgstr ""
3164
-
3165
- #: inc/cart/class-lp-cart.php:242
3166
  msgid "Cart page is not setting up."
3167
  msgstr ""
3168
 
3169
- #: inc/cart/class-lp-cart.php:245 templates/cart/empty-cart.php:19
3170
  msgid "Back to class"
3171
  msgstr ""
3172
 
3173
- #: inc/cart/class-lp-cart.php:250 inc/cart/class-lp-cart.php:260
3174
  msgid "Checkout page is not setting up."
3175
  msgstr ""
3176
 
3177
- #: inc/cart/class-lp-cart.php:252
3178
  msgid "View cart"
3179
  msgstr ""
3180
 
3181
- #: inc/cart/class-lp-cart.php:255
3182
  #, php-format
3183
  msgid "<strong>%s</strong> has been added to your cart. %s"
3184
  msgstr ""
3185
 
3186
- #: inc/cart/class-lp-cart.php:544
3187
  msgid "Checkout page is not setup"
3188
  msgstr ""
3189
 
@@ -3219,18 +3203,18 @@ msgstr ""
3219
  msgid "The function %s doesn't exists"
3220
  msgstr ""
3221
 
3222
- #: inc/course/abstract-lp-course.php:1095
3223
  #, php-format
3224
  msgid "%d of %d items completed"
3225
  msgstr ""
3226
 
3227
- #: inc/course/abstract-lp-course.php:1098
3228
- #: inc/course/abstract-lp-course.php:1100
3229
  #, php-format
3230
  msgid "%d%% completed"
3231
  msgstr ""
3232
 
3233
- #: inc/course/abstract-lp-course.php:1388
3234
  #, php-format
3235
  msgid "This course will end within %s next"
3236
  msgstr ""
@@ -3240,7 +3224,7 @@ msgstr ""
3240
  msgid "Are you sure you want to finish course %s?"
3241
  msgstr ""
3242
 
3243
- #: inc/course/class-lp-course.php:32 templates/single-course/buttons.php:65
3244
  msgid "Finish course"
3245
  msgstr ""
3246
 
@@ -3287,83 +3271,84 @@ msgid ""
3287
  "will reload"
3288
  msgstr ""
3289
 
3290
- #: inc/course/lp-course-functions.php:133
3291
  msgctxt "slug"
3292
  msgid "uncategorized"
3293
  msgstr ""
3294
 
3295
- #: inc/course/lp-course-functions.php:178
3296
  #, php-format
3297
  msgid "The course %d does not exists"
3298
  msgstr ""
3299
 
3300
- #: inc/course/lp-course-functions.php:646
3301
  msgid "Course item navigation"
3302
  msgstr ""
3303
 
3304
- #: inc/course/lp-course-functions.php:653
3305
  #: templates/content-quiz/buttons.php:31
3306
  msgid "Previous"
3307
  msgstr ""
3308
 
3309
- #: inc/course/lp-course-functions.php:653
3310
  msgid "Previous post:"
3311
  msgstr ""
3312
 
3313
- #: inc/course/lp-course-functions.php:661
 
3314
  #: templates/content-quiz/buttons.php:32
3315
  msgid "Next"
3316
  msgstr ""
3317
 
3318
- #: inc/course/lp-course-functions.php:661
3319
  msgid "Next post:"
3320
  msgstr ""
3321
 
3322
- #: inc/custom-post-types/abstract.php:414
3323
  #: inc/custom-post-types/abstract.php:417
 
3324
  msgid "updated."
3325
  msgstr ""
3326
 
3327
- #: inc/custom-post-types/abstract.php:415
3328
  msgid "Custom field updated."
3329
  msgstr ""
3330
 
3331
- #: inc/custom-post-types/abstract.php:416
3332
  msgid "Custom field deleted."
3333
  msgstr ""
3334
 
3335
- #: inc/custom-post-types/abstract.php:419
3336
  #, php-format
3337
  msgid "Lesson restored to revision from %s"
3338
  msgstr ""
3339
 
3340
- #: inc/custom-post-types/abstract.php:420
3341
  msgid "published."
3342
  msgstr ""
3343
 
3344
- #: inc/custom-post-types/abstract.php:421
3345
  msgid "saved."
3346
  msgstr ""
3347
 
3348
- #: inc/custom-post-types/abstract.php:422
3349
  msgid "submitted."
3350
  msgstr ""
3351
 
3352
- #: inc/custom-post-types/abstract.php:424
3353
  #, php-format
3354
  msgid "scheduled for: <strong>%1$s</strong>."
3355
  msgstr ""
3356
 
3357
- #: inc/custom-post-types/abstract.php:426
3358
  msgid "M j, Y @ G:i"
3359
  msgstr ""
3360
 
3361
- #: inc/custom-post-types/abstract.php:428
3362
  msgid "draft updated."
3363
  msgstr ""
3364
 
3365
- #: inc/custom-post-types/abstract.php:434
3366
- #: inc/custom-post-types/abstract.php:443 inc/custom-post-types/lesson.php:246
3367
  #: inc/custom-post-types/question.php:279 inc/custom-post-types/quiz.php:350
3368
  #: templates/profile/tabs/orders.php:39
3369
  msgid "View"
@@ -3470,270 +3455,266 @@ msgctxt "slug"
3470
  msgid "course-tag"
3471
  msgstr ""
3472
 
3473
- #: inc/custom-post-types/course.php:332
3474
  msgid "Sorry! You can not update a course while it is viewing!"
3475
  msgstr ""
3476
 
3477
- #: inc/custom-post-types/course.php:368
3478
  msgid "Toggle Course Content"
3479
  msgstr ""
3480
 
3481
- #: inc/custom-post-types/course.php:385
3482
  msgid "Please enter the title of the course"
3483
  msgstr ""
3484
 
3485
- #: inc/custom-post-types/course.php:386
3486
  msgid "Please add at least one section for the course"
3487
  msgstr ""
3488
 
3489
- #: inc/custom-post-types/course.php:387
3490
  msgid "Please enter the title of the section"
3491
  msgstr ""
3492
 
3493
- #: inc/custom-post-types/course.php:388
3494
  msgid "Please set a price for this course"
3495
  msgstr ""
3496
 
3497
- #: inc/custom-post-types/course.php:406
3498
  msgid "You course will become to Pending"
3499
  msgstr ""
3500
 
3501
- #: inc/custom-post-types/course.php:449
3502
  msgctxt "Post Type General Name"
3503
  msgid "Courses"
3504
  msgstr ""
3505
 
3506
- #: inc/custom-post-types/course.php:450
3507
  msgctxt "Post Type Singular Name"
3508
  msgid "Course"
3509
  msgstr ""
3510
 
3511
- #: inc/custom-post-types/course.php:452
3512
  msgid "Parent Item:"
3513
  msgstr ""
3514
 
3515
- #: inc/custom-post-types/course.php:454
3516
  msgid "View Course"
3517
  msgstr ""
3518
 
3519
- #: inc/custom-post-types/course.php:455
3520
  msgid "Add New Course"
3521
  msgstr ""
3522
 
3523
- #: inc/custom-post-types/course.php:457
3524
  msgid "Edit Course"
3525
  msgstr ""
3526
 
3527
- #: inc/custom-post-types/course.php:458
3528
  msgid "Update Course"
3529
  msgstr ""
3530
 
3531
- #: inc/custom-post-types/course.php:459
3532
  msgid "Search Courses"
3533
  msgstr ""
3534
 
3535
- #: inc/custom-post-types/course.php:460
3536
  #, php-format
3537
  msgid ""
3538
  "You have not got any courses yet. Click <a href=\"%s\">Add new</a> to start"
3539
  msgstr ""
3540
 
3541
- #: inc/custom-post-types/course.php:461
3542
  msgid "No course found in Trash"
3543
  msgstr ""
3544
 
3545
- #: inc/custom-post-types/course.php:559 inc/custom-post-types/quiz.php:146
3546
  msgid "General Settings"
3547
  msgstr ""
3548
 
3549
- #: inc/custom-post-types/course.php:564 inc/custom-post-types/lesson.php:209
3550
  #: inc/custom-post-types/quiz.php:165 inc/custom-post-types/quiz.php:319
3551
  msgid "Duration"
3552
  msgstr ""
3553
 
3554
- #: inc/custom-post-types/course.php:567
3555
  msgid "The duration of the course (by weeks)."
3556
  msgstr ""
3557
 
3558
- #: inc/custom-post-types/course.php:571
3559
  msgid "Maximum students"
3560
  msgstr ""
3561
 
3562
- #: inc/custom-post-types/course.php:574
3563
  msgid "Maximum number of students who can enroll in this course."
3564
  msgstr ""
3565
 
3566
- #: inc/custom-post-types/course.php:578
3567
  msgid "Students enrolled"
3568
  msgstr ""
3569
 
3570
- #: inc/custom-post-types/course.php:581
3571
  msgid "How many students have taken this course."
3572
  msgstr ""
3573
 
3574
- #: inc/custom-post-types/course.php:585
3575
  msgid "Re-take course"
3576
  msgstr ""
3577
 
3578
- #: inc/custom-post-types/course.php:588
3579
  msgid "How many times the user can re-take this course. Set to 0 to disable."
3580
  msgstr ""
3581
 
3582
- #: inc/custom-post-types/course.php:592
3583
  msgid "Featured"
3584
  msgstr ""
3585
 
3586
- #: inc/custom-post-types/course.php:595
3587
  msgid "Set course as featured."
3588
  msgstr ""
3589
 
3590
- #: inc/custom-post-types/course.php:613
3591
  msgid "The method to assess the result of a student for a course."
3592
  msgstr ""
3593
 
3594
- #: inc/custom-post-types/course.php:615
3595
  msgid ""
3596
  "<br /><strong>Note! </strong>No final quiz in course, please add a final quiz"
3597
  msgstr ""
3598
 
3599
- #: inc/custom-post-types/course.php:619
3600
  msgid "Assessment"
3601
  msgstr ""
3602
 
3603
- #: inc/custom-post-types/course.php:624
3604
  msgid "Course result"
3605
  msgstr ""
3606
 
3607
- #: inc/custom-post-types/course.php:629
3608
  msgid "Evaluate lessons"
3609
  msgstr ""
3610
 
3611
- #: inc/custom-post-types/course.php:630
3612
  msgid "Evaluate result of quizzes"
3613
  msgstr ""
3614
 
3615
- #: inc/custom-post-types/course.php:631
3616
  msgid "Evaluate the result of the final quiz"
3617
  msgstr ""
3618
 
3619
- #: inc/custom-post-types/course.php:636
3620
  msgid "Passing condition value"
3621
  msgstr ""
3622
 
3623
- #: inc/custom-post-types/course.php:641
3624
  msgid ""
3625
  "The percentage of quiz result or lessons completed to finish the course."
3626
  msgstr ""
3627
 
3628
- #: inc/custom-post-types/course.php:662
3629
  msgid "Payment Settings"
3630
  msgstr ""
3631
 
3632
- #: inc/custom-post-types/course.php:667
3633
  msgid "Course payment"
3634
  msgstr ""
3635
 
3636
- #: inc/custom-post-types/course.php:696
3637
  #, php-format
3638
  msgid ""
3639
  "This course is requires enrollment and the suggested price is <strong>%s</"
3640
  "strong>"
3641
  msgstr ""
3642
 
3643
- #: inc/custom-post-types/course.php:704
3644
  msgid "This course is free."
3645
  msgstr ""
3646
 
3647
- #: inc/custom-post-types/course.php:710 inc/custom-post-types/course.php:1302
3648
- #: inc/custom-post-types/course.php:1308 templates/cart/form.php:30
3649
  #: templates/emails/order-items-table.php:21
3650
  msgid "Price"
3651
  msgstr ""
3652
 
3653
- #: inc/custom-post-types/course.php:720
3654
  msgid "Sale Price"
3655
  msgstr ""
3656
 
3657
- #: inc/custom-post-types/course.php:725
3658
  msgid "Schedule"
3659
  msgstr ""
3660
 
3661
- #: inc/custom-post-types/course.php:730
3662
  msgid "Sale start date"
3663
  msgstr ""
3664
 
3665
- #: inc/custom-post-types/course.php:737
3666
  msgid "Sale end date"
3667
  msgstr ""
3668
 
3669
- #: inc/custom-post-types/course.php:748
3670
  msgid "Price set by Admin"
3671
  msgstr ""
3672
 
3673
- #: inc/custom-post-types/course.php:752
3674
  msgid "Not set"
3675
  msgstr ""
3676
 
3677
- #: inc/custom-post-types/course.php:755
3678
  msgid "Course Suggestion Price"
3679
  msgstr ""
3680
 
3681
- #: inc/custom-post-types/course.php:760
3682
  msgid "The course price you want to suggest for admin to set."
3683
  msgstr ""
3684
 
3685
- #: inc/custom-post-types/course.php:770
3686
  msgid "Requires enroll"
3687
  msgstr ""
3688
 
3689
- #: inc/custom-post-types/course.php:773
3690
  msgid "Require users logged in to study or public to all."
3691
  msgstr ""
3692
 
3693
- #: inc/custom-post-types/course.php:808
3694
  msgid "Author Settings"
3695
  msgstr ""
3696
 
3697
- #: inc/custom-post-types/course.php:813 inc/custom-post-types/course.php:1299
3698
- #: inc/custom-post-types/course.php:1305 inc/custom-post-types/lesson.php:204
3699
  #: inc/custom-post-types/question.php:243 inc/custom-post-types/quiz.php:316
3700
  msgid "Author"
3701
  msgstr ""
3702
 
3703
- #: inc/custom-post-types/course.php:819
3704
- msgid "Select author"
3705
- msgstr ""
3706
-
3707
- #: inc/custom-post-types/course.php:837
3708
  msgid "Review Logs"
3709
  msgstr ""
3710
 
3711
- #: inc/custom-post-types/course.php:994
3712
  msgid "Course Curriculum only appear if course is saved"
3713
  msgstr ""
3714
 
3715
- #: inc/custom-post-types/course.php:1155
3716
  msgid "Course has approved by Reviewer"
3717
  msgstr ""
3718
 
3719
- #: inc/custom-post-types/course.php:1160
3720
  msgid "Course has rejected by Reviewer"
3721
  msgstr ""
3722
 
3723
- #: inc/custom-post-types/course.php:1165
3724
  #, php-format
3725
  msgid "Course has submitted by %s"
3726
  msgstr ""
3727
 
3728
- #: inc/custom-post-types/course.php:1170
3729
  msgid "Course has updated by Reviewer"
3730
  msgstr ""
3731
 
3732
- #: inc/custom-post-types/course.php:1207
3733
  msgid "Your course has been published"
3734
  msgstr ""
3735
 
3736
- #: inc/custom-post-types/course.php:1334
3737
  #, php-format
3738
  msgctxt "learnpress"
3739
  msgid "%d section"
@@ -3741,7 +3722,7 @@ msgid_plural "%d sections"
3741
  msgstr[0] ""
3742
  msgstr[1] ""
3743
 
3744
- #: inc/custom-post-types/course.php:1337
3745
  #, php-format
3746
  msgctxt "learnpress"
3747
  msgid "%d lesson"
@@ -3749,11 +3730,11 @@ msgid_plural "%d lessons"
3749
  msgstr[0] ""
3750
  msgstr[1] ""
3751
 
3752
- #: inc/custom-post-types/course.php:1339
3753
  msgid "0 lesson"
3754
  msgstr ""
3755
 
3756
- #: inc/custom-post-types/course.php:1343
3757
  #, php-format
3758
  msgctxt "learnpress"
3759
  msgid "%d quiz"
@@ -3761,55 +3742,55 @@ msgid_plural "%d quizzes"
3761
  msgstr[0] ""
3762
  msgstr[1] ""
3763
 
3764
- #: inc/custom-post-types/course.php:1345
3765
  msgid "0 quiz"
3766
  msgstr ""
3767
 
3768
- #: inc/custom-post-types/course.php:1350
3769
  msgid "No content"
3770
  msgstr ""
3771
 
3772
- #: inc/custom-post-types/course.php:1510
3773
  msgid "Course Video"
3774
  msgstr ""
3775
 
3776
- #: inc/custom-post-types/course.php:1515
3777
  msgid "Video ID"
3778
  msgstr ""
3779
 
3780
- #: inc/custom-post-types/course.php:1518
3781
  msgid "The id of Youtube or Vimeo video"
3782
  msgstr ""
3783
 
3784
- #: inc/custom-post-types/course.php:1522
3785
  msgid "Video Type"
3786
  msgstr ""
3787
 
3788
- #: inc/custom-post-types/course.php:1525
3789
  msgid "Chose video type"
3790
  msgstr ""
3791
 
3792
- #: inc/custom-post-types/course.php:1528
3793
  msgid "Youtube"
3794
  msgstr ""
3795
 
3796
- #: inc/custom-post-types/course.php:1529
3797
  msgid "Vimeo"
3798
  msgstr ""
3799
 
3800
- #: inc/custom-post-types/course.php:1533
3801
  msgid "Embed width"
3802
  msgstr ""
3803
 
3804
- #: inc/custom-post-types/course.php:1536
3805
  msgid "Set width of embed"
3806
  msgstr ""
3807
 
3808
- #: inc/custom-post-types/course.php:1540
3809
  msgid "Embed height"
3810
  msgstr ""
3811
 
3812
- #: inc/custom-post-types/course.php:1543
3813
  msgid "Set height of embed"
3814
  msgstr ""
3815
 
@@ -3932,7 +3913,7 @@ msgstr ""
3932
  msgid "Add New Order"
3933
  msgstr ""
3934
 
3935
- #: inc/custom-post-types/order.php:416 inc/custom-post-types/order.php:563
3936
  #: templates/order/order-details.php:13
3937
  msgid "Order Details"
3938
  msgstr ""
@@ -3953,55 +3934,7 @@ msgstr ""
3953
  msgid "No order found in Trash"
3954
  msgstr ""
3955
 
3956
- #: inc/custom-post-types/order.php:486 inc/order/lp-order-functions.php:657
3957
- msgctxt "Order status"
3958
- msgid "Completed"
3959
- msgstr ""
3960
-
3961
- #: inc/custom-post-types/order.php:491
3962
- #, php-format
3963
- msgid "Completed <span class=\"count\">(%s)</span>"
3964
- msgid_plural "Completed <span class=\"count\">(%s)</span>"
3965
- msgstr[0] ""
3966
- msgstr[1] ""
3967
-
3968
- #: inc/custom-post-types/order.php:494 inc/order/lp-order-functions.php:656
3969
- msgctxt "Order status"
3970
- msgid "Processing"
3971
- msgstr ""
3972
-
3973
- #: inc/custom-post-types/order.php:499
3974
- #, php-format
3975
- msgid "Processing <span class=\"count\">(%s)</span>"
3976
- msgid_plural "Processing <span class=\"count\">(%s)</span>"
3977
- msgstr[0] ""
3978
- msgstr[1] ""
3979
-
3980
- #: inc/custom-post-types/order.php:502
3981
- msgctxt "Order status"
3982
- msgid "Pending Payment"
3983
- msgstr ""
3984
-
3985
  #: inc/custom-post-types/order.php:507
3986
- #, php-format
3987
- msgid "Pending Payment <span class=\"count\">(%s)</span>"
3988
- msgid_plural "Pending Payment <span class=\"count\">(%s)</span>"
3989
- msgstr[0] ""
3990
- msgstr[1] ""
3991
-
3992
- #: inc/custom-post-types/order.php:510 inc/order/lp-order-functions.php:658
3993
- msgctxt "Order status"
3994
- msgid "Cancelled"
3995
- msgstr ""
3996
-
3997
- #: inc/custom-post-types/order.php:515
3998
- #, php-format
3999
- msgid "Cancelled <span class=\"count\">(%s)</span>"
4000
- msgid_plural "Cancelled <span class=\"count\">(%s)</span>"
4001
- msgstr[0] ""
4002
- msgstr[1] ""
4003
-
4004
- #: inc/custom-post-types/order.php:564
4005
  msgid "Order Actions"
4006
  msgstr ""
4007
 
@@ -4282,15 +4215,15 @@ msgstr ""
4282
  msgid "Your order {{order_number}} is completed"
4283
  msgstr ""
4284
 
4285
- #: inc/emails/class-lp-email.php:329
4286
  msgid "Template file copied to theme."
4287
  msgstr ""
4288
 
4289
- #: inc/emails/class-lp-email.php:344
4290
  msgid "Template file deleted from theme."
4291
  msgstr ""
4292
 
4293
- #: inc/emails/class-lp-email.php:543
4294
  msgid "Could not write to template file."
4295
  msgstr ""
4296
 
@@ -4323,11 +4256,11 @@ msgstr ""
4323
  msgid "Extensions"
4324
  msgstr ""
4325
 
4326
- #: inc/libraries/meta-box/inc/field.php:217
4327
  msgid "+"
4328
  msgstr ""
4329
 
4330
- #: inc/libraries/meta-box/inc/field.php:226
4331
  msgid "&#8211;"
4332
  msgstr ""
4333
 
@@ -4489,29 +4422,77 @@ msgstr ""
4489
  msgid "Invalid order status"
4490
  msgstr ""
4491
 
4492
- #: inc/order/lp-order-functions.php:655
4493
  msgctxt "Order status"
4494
  msgid "Pending"
4495
  msgstr ""
4496
 
4497
- #: inc/order/lp-order-functions.php:670
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4498
  msgid ""
4499
  "Order received in case user buy a course but doesn't finalise the order."
4500
  msgstr ""
4501
 
4502
- #: inc/order/lp-order-functions.php:671
4503
  msgid "Payment received and the order is awaiting fulfillment."
4504
  msgstr ""
4505
 
4506
- #: inc/order/lp-order-functions.php:672
4507
  msgid "Order fulfilled and complete."
4508
  msgstr ""
4509
 
4510
- #: inc/order/lp-order-functions.php:673
4511
  msgid "The order is cancelled by an admin or the customer."
4512
  msgstr ""
4513
 
4514
- #: inc/order/lp-order-functions.php:716
4515
  #, php-format
4516
  msgid "You have enrolled in this course. <a href=\"%s\">Order details</a>"
4517
  msgstr ""
@@ -4628,7 +4609,7 @@ msgstr ""
4628
  msgid "Retake quiz failed"
4629
  msgstr ""
4630
 
4631
- #: inc/quiz/class-lp-quiz-factory.php:356
4632
  #, php-format
4633
  msgid ""
4634
  "Action %s failed! Please contact site's administrator for more information."
@@ -4731,13 +4712,13 @@ msgstr ""
4731
  msgid "Create quiz history need pass course ID"
4732
  msgstr ""
4733
 
4734
- #: inc/user/abstract-lp-user.php:1099 inc/user/abstract-lp-user.php:1411
4735
- #: inc/user/abstract-lp-user.php:1423
4736
  #, php-format
4737
  msgid "The role %s for user doesn't exists"
4738
  msgstr ""
4739
 
4740
- #: inc/user/abstract-lp-user.php:1815
4741
  msgid "You have already completed this lesson"
4742
  msgstr ""
4743
 
@@ -4795,43 +4776,43 @@ msgstr ""
4795
  msgid "Profile picture is changed"
4796
  msgstr ""
4797
 
4798
- #: inc/user/lp-user-functions.php:787 inc/user/lp-user-functions.php:1212
4799
  msgid "Old password incorrect!"
4800
  msgstr ""
4801
 
4802
- #: inc/user/lp-user-functions.php:800 inc/user/lp-user-functions.php:1218
4803
  msgid "Confirmation password incorrect!"
4804
  msgstr ""
4805
 
4806
- #: inc/user/lp-user-functions.php:818 inc/user/lp-user-functions.php:1181
4807
  msgid "Your change is saved"
4808
  msgstr ""
4809
 
4810
- #: inc/user/lp-user-functions.php:826 inc/user/lp-user-functions.php:1183
4811
  msgid "Error on update your profile info"
4812
  msgstr ""
4813
 
4814
- #: inc/user/lp-user-functions.php:947
4815
  msgid "Please login to enroll this course"
4816
  msgstr ""
4817
 
4818
- #: inc/user/lp-user-functions.php:965
4819
  msgid "You have already finished course"
4820
  msgstr ""
4821
 
4822
- #: inc/user/lp-user-functions.php:968
4823
  msgid "You have already enrolled in this course"
4824
  msgstr ""
4825
 
4826
- #: inc/user/lp-user-functions.php:1159
4827
  msgid "Your avatar updated"
4828
  msgstr ""
4829
 
4830
- #: inc/user/lp-user-functions.php:1225
4831
  msgid "Your password updated"
4832
  msgstr ""
4833
 
4834
- #: inc/user/lp-user-functions.php:1227
4835
  msgid "Change your password failed"
4836
  msgstr ""
4837
 
@@ -5153,6 +5134,15 @@ msgstr ""
5153
  msgid "This lesson has no content"
5154
  msgstr ""
5155
 
 
 
 
 
 
 
 
 
 
5156
  #: templates/content-question/explanation.php:19
5157
  msgid "Explanation:"
5158
  msgstr ""
@@ -5386,11 +5376,7 @@ msgstr ""
5386
  msgid "Passing condition: %s%%"
5387
  msgstr ""
5388
 
5389
- #: templates/profile/tabs/edit/avatar.php:15
5390
- msgid "Add a nice photo of yourself for your profile."
5391
- msgstr ""
5392
-
5393
- #: templates/profile/tabs/edit/avatar.php:53
5394
  msgid "Upload"
5395
  msgstr ""
5396
 
@@ -5440,23 +5426,24 @@ msgstr ""
5440
  msgid "Enroll"
5441
  msgstr ""
5442
 
5443
- #: templates/single-course/buttons.php:43
 
 
 
 
 
5444
  #, php-format
5445
  msgid "Retake course (+%d)"
5446
  msgstr ""
5447
 
5448
- #: templates/single-course/buttons.php:98
5449
  msgid "You have purchased this course. Please wait for approval."
5450
  msgstr ""
5451
 
5452
- #: templates/single-course/buttons.php:100
5453
  msgid "Sorry, you can not purchase this course"
5454
  msgstr ""
5455
 
5456
- #: templates/single-course/content-item-lp_lesson.php:33
5457
- msgid "Complete"
5458
- msgstr ""
5459
-
5460
  #: templates/single-course/content-item-lp_quiz.php:55
5461
  msgid "No questions"
5462
  msgstr ""
7
  #: inc/admin/views/meta-boxes/course/loop-item.php:48
8
  #: inc/admin/views/meta-boxes/course/loop-item.php:49
9
  #: inc/admin/views/meta-boxes/course/loop-section.php:37
10
+ #: inc/custom-post-types/course.php:685 inc/custom-post-types/question.php:131
11
  #: inc/custom-post-types/quiz.php:133 inc/custom-post-types/quiz.php:134
12
  #: inc/question/class-lp-question-multi-choice.php:148
13
  #, fuzzy
15
  msgstr ""
16
  "Project-Id-Version: PACKAGE VERSION\n"
17
  "Report-Msgid-Bugs-To: \n"
18
+ "POT-Creation-Date: 2017-01-24 10:43+0700\n"
19
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
20
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
21
  "Language-Team: LANGUAGE <LL@li.org>\n"
112
 
113
  #: inc/class-lp-ajax.php:532 inc/admin/lp-admin-functions.php:930
114
  #: inc/admin/views/statistics/orders.php:63
115
+ #: templates/content-lesson/__complete-button.php:43
116
  #: templates/single-course/content-item-lp_lesson.php:24
117
  #: templates/single-course/section/item-meta.php:34
118
  msgid "Completed"
259
  msgid "Ok"
260
  msgstr ""
261
 
262
+ #: inc/class-lp-install.php:90 inc/lp-core-functions.php:1951
263
+ #: inc/admin/class-lp-admin-ajax.php:851 inc/admin/class-lp-admin.php:181
264
  #: inc/admin/views/meta-boxes/course/loop-section.php:48
265
+ #: inc/custom-post-types/course.php:756 templates/profile/tabs/orders.php:30
266
  msgid "Cancel"
267
  msgstr ""
268
 
293
  msgid "Add-ons"
294
  msgstr ""
295
 
296
+ #: inc/class-lp-shortcodes.php:163 inc/class-lp-shortcodes.php:332
297
  msgid "Invalid order!"
298
  msgstr ""
299
 
300
+ #: inc/class-lp-shortcodes.php:214
301
  msgid "Please login to fill in this form."
302
  msgstr ""
303
 
304
+ #: inc/class-lp-shortcodes.php:217
305
  msgid "You are a teacher now."
306
  msgstr ""
307
 
308
+ #: inc/class-lp-shortcodes.php:220 inc/lp-core-functions.php:1397
309
  msgid "Your request has been sent! We will get in touch with you soon!"
310
  msgstr ""
311
 
312
+ #: inc/class-lp-shortcodes.php:223
313
  msgid "Your role is allowed to create a course."
314
  msgstr ""
315
 
316
+ #: inc/class-lp-shortcodes.php:235
317
  msgid "Become a Teacher"
318
  msgstr ""
319
 
320
+ #: inc/class-lp-shortcodes.php:236
321
  msgid "Fill in your information and send us to become a teacher."
322
  msgstr ""
323
 
324
+ #: inc/class-lp-shortcodes.php:237 templates/global/become-teacher-form.php:13
325
  msgid "Submit"
326
  msgstr ""
327
 
328
+ #: inc/class-lp-shortcodes.php:238 templates/checkout/payment.php:16
329
  msgid "Processing"
330
  msgstr ""
331
 
332
+ #: inc/class-lp-shortcodes.php:244
333
  msgid "Name"
334
  msgstr ""
335
 
336
+ #: inc/class-lp-shortcodes.php:246
337
  msgid "Your name"
338
  msgstr ""
339
 
340
+ #: inc/class-lp-shortcodes.php:250
341
  msgid "Email"
342
  msgstr ""
343
 
344
+ #: inc/class-lp-shortcodes.php:252
345
  msgid "Your email address"
346
  msgstr ""
347
 
348
+ #: inc/class-lp-shortcodes.php:256
349
  msgid "Phone"
350
  msgstr ""
351
 
352
+ #: inc/class-lp-shortcodes.php:258
353
  msgid "Your phone number"
354
  msgstr ""
355
 
356
+ #: inc/class-lp-shortcodes.php:294
357
  #, php-format
358
  msgid "The user %s is not available!"
359
  msgstr ""
360
 
361
+ #: inc/class-lp-shortcodes.php:366
362
  msgid "Forgot password?"
363
  msgstr ""
364
 
365
+ #: inc/class-lp-shortcodes.php:368
366
  msgid "Create new account"
367
  msgstr ""
368
 
381
  msgid "Related Themes <span class=\"count\">(%s)</span>"
382
  msgstr ""
383
 
384
+ #: inc/lp-add-on-functions.php:118 inc/lp-core-functions.php:2281
385
+ #: inc/lp-core-functions.php:2692 inc/admin/lp-admin-actions.php:50
386
  #: inc/admin/lp-admin-functions.php:558 inc/admin/lp-admin-functions.php:723
387
  #: inc/admin/lp-admin-functions.php:925 inc/admin/sub-menus/tools.php:321
388
  #: inc/admin/views/statistics/courses.php:27
592
  msgstr ""
593
 
594
  #: inc/lp-add-on-functions.php:996 inc/lp-add-on-functions.php:1063
595
+ #: inc/lp-core-functions.php:495
596
  msgid "Get it now"
597
  msgstr ""
598
 
599
  #: inc/lp-add-on-functions.php:997 inc/lp-add-on-functions.php:1064
600
+ #: inc/lp-core-functions.php:496
601
  msgid "View Demo"
602
  msgstr ""
603
 
605
  msgid "Other"
606
  msgstr ""
607
 
608
+ #: inc/lp-core-functions.php:234 inc/lp-template-functions.php:1401
609
+ #: inc/admin/settings/class-lp-settings-courses.php:158
610
+ #: inc/course/lp-course-functions.php:493 inc/custom-post-types/lesson.php:93
611
  msgid "Lesson"
612
  msgstr ""
613
 
614
+ #: inc/lp-core-functions.php:235 inc/lp-template-functions.php:1391
615
+ #: inc/admin/settings/class-lp-settings-courses.php:165
616
  #: inc/admin/settings/class-lp-settings-pages.php:22
617
+ #: inc/course/lp-course-functions.php:494
618
  #: inc/custom-post-types/question.php:244 inc/custom-post-types/quiz.php:91
619
  msgid "Quiz"
620
  msgstr ""
621
 
622
+ #: inc/lp-core-functions.php:657
623
  msgid "<"
624
  msgstr ""
625
 
626
+ #: inc/lp-core-functions.php:658
627
  msgid ">"
628
  msgstr ""
629
 
630
+ #: inc/lp-core-functions.php:756
631
  msgid "Minute(s)"
632
  msgstr ""
633
 
634
+ #: inc/lp-core-functions.php:757
635
  msgid "Hour(s)"
636
  msgstr ""
637
 
638
+ #: inc/lp-core-functions.php:758
639
  msgid "Day(s)"
640
  msgstr ""
641
 
642
+ #: inc/lp-core-functions.php:759
643
  msgid "Week(s)"
644
  msgstr ""
645
 
646
+ #: inc/lp-core-functions.php:819 inc/lp-template-functions.php:697
647
  #: inc/admin/class-lp-profile.php:77 inc/admin/lp-admin-functions.php:299
648
  #: inc/admin/settings/class-lp-settings-courses.php:9
649
  #: inc/admin/settings/class-lp-settings-pages.php:105
650
  #: inc/admin/sub-menus/statistics.php:50 inc/admin/sub-menus/statistics.php:56
651
+ #: inc/custom-post-types/course.php:477 inc/custom-post-types/course.php:479
652
  msgid "Courses"
653
  msgstr ""
654
 
655
+ #: inc/lp-core-functions.php:825 inc/custom-post-types/course.php:1329
656
  msgid "Categories"
657
  msgstr ""
658
 
659
+ #: inc/lp-core-functions.php:830 inc/custom-post-types/course.php:244
660
  msgid "Tags"
661
  msgstr ""
662
 
663
+ #: inc/lp-core-functions.php:998
664
  msgid "Left"
665
  msgstr ""
666
 
667
+ #: inc/lp-core-functions.php:999
668
  msgid "Right"
669
  msgstr ""
670
 
671
+ #: inc/lp-core-functions.php:1000
672
  msgid "Left with space"
673
  msgstr ""
674
 
675
+ #: inc/lp-core-functions.php:1001
676
  msgid "Right with space"
677
  msgstr ""
678
 
679
+ #: inc/lp-core-functions.php:1269
680
  msgid "week(s)"
681
  msgstr ""
682
 
683
+ #: inc/lp-core-functions.php:1273
684
  msgid "day(s)"
685
  msgstr ""
686
 
687
+ #: inc/lp-core-functions.php:1278
688
  msgid "hour(s)"
689
  msgstr ""
690
 
691
+ #: inc/lp-core-functions.php:1282
692
  msgid "min(s)"
693
  msgstr ""
694
 
695
+ #: inc/lp-core-functions.php:1370
696
  msgid "Please enter your name"
697
  msgstr ""
698
 
699
+ #: inc/lp-core-functions.php:1375
700
  msgid "Please enter your email address"
701
  msgstr ""
702
 
703
+ #: inc/lp-core-functions.php:1382
704
  msgid "Please moderate"
705
  msgstr ""
706
 
707
+ #: inc/lp-core-functions.php:1383
708
  #, php-format
709
  msgid "The user <a href=\"%s\">%s</a> wants to be a teacher."
710
  msgstr ""
711
 
712
+ #: inc/lp-core-functions.php:1385
713
  #, php-format
714
  msgid "Name: %s"
715
  msgstr ""
716
 
717
+ #: inc/lp-core-functions.php:1386
718
  #, php-format
719
  msgid "Email: %s"
720
  msgstr ""
721
 
722
+ #: inc/lp-core-functions.php:1387
723
  #, php-format
724
  msgid "Phone: %s"
725
  msgstr ""
726
 
727
+ #: inc/lp-core-functions.php:1388
728
  #, php-format
729
  msgid "Accept: %s"
730
  msgstr ""
731
 
732
+ #: inc/lp-core-functions.php:1950 inc/admin/class-lp-admin.php:180
733
  msgid "OK"
734
  msgstr ""
735
 
736
+ #: inc/lp-core-functions.php:1952 inc/admin/class-lp-admin.php:182
737
  #: inc/custom-post-types/quiz.php:223 inc/custom-post-types/quiz.php:234
738
  msgid "Yes"
739
  msgstr ""
740
 
741
+ #: inc/lp-core-functions.php:1953 inc/admin/class-lp-admin.php:183
742
  #: inc/custom-post-types/quiz.php:179 inc/custom-post-types/quiz.php:222
743
  #: inc/custom-post-types/quiz.php:233
744
  msgid "No"
745
  msgstr ""
746
 
747
+ #: inc/lp-core-functions.php:2282
748
  msgid "Learning"
749
  msgstr ""
750
 
751
+ #: inc/lp-core-functions.php:2283 inc/custom-post-types/order.php:305
752
  msgid "Purchased"
753
  msgstr ""
754
 
755
+ #: inc/lp-core-functions.php:2284 inc/lp-core-functions.php:2694
756
  msgid "Finished"
757
  msgstr ""
758
 
759
+ #: inc/lp-core-functions.php:2285
760
  msgid "Own"
761
  msgstr ""
762
 
763
+ #: inc/lp-core-functions.php:2394
764
  #, php-format
765
  msgid "Congrats! You've enrolled course \"%s\"."
766
  msgstr ""
767
 
768
+ #: inc/lp-core-functions.php:2427
769
  msgid "Cart"
770
  msgstr ""
771
 
772
+ #: inc/lp-core-functions.php:2431
773
  msgid "Enable cart"
774
  msgstr ""
775
 
776
+ #: inc/lp-core-functions.php:2432
777
  msgid "Check this option to enable user purchase multiple courses at one time."
778
  msgstr ""
779
 
780
+ #: inc/lp-core-functions.php:2438
781
  msgid "Add to cart redirect"
782
  msgstr ""
783
 
784
+ #: inc/lp-core-functions.php:2439
785
  msgid "Redirect to checkout immediately after adding course to cart."
786
  msgstr ""
787
 
788
+ #: inc/lp-core-functions.php:2445
789
  msgid "AJAX add to cart"
790
  msgstr ""
791
 
792
+ #: inc/lp-core-functions.php:2446
793
  msgid "Using AJAX to add course to cart."
794
  msgstr ""
795
 
796
+ #: inc/lp-core-functions.php:2452
797
  msgid "Cart page"
798
  msgstr ""
799
 
800
+ #: inc/lp-core-functions.php:2575
801
  msgid "Are you sure you want to cancel order?"
802
  msgstr ""
803
 
804
+ #: inc/lp-core-functions.php:2576
805
  msgid "Cancel Order"
806
  msgstr ""
807
 
808
+ #: inc/lp-core-functions.php:2592
809
  msgid "Unknown error!"
810
  msgstr ""
811
 
812
+ #: inc/lp-core-functions.php:2593
813
  msgid "Invalid field!"
814
  msgstr ""
815
 
816
+ #: inc/lp-core-functions.php:2613
817
  #, php-format
818
  msgid "Order number <strong>%s</strong> not found"
819
  msgstr ""
820
 
821
+ #: inc/lp-core-functions.php:2616
822
  msgid "Order cancelled by customer"
823
  msgstr ""
824
 
825
+ #: inc/lp-core-functions.php:2619
826
  #, php-format
827
  msgid "Order number <strong>%s</strong> has been cancelled"
828
  msgstr ""
829
 
830
+ #: inc/lp-core-functions.php:2622
831
  #, php-format
832
  msgid "Order number <strong>%s</strong> can not cancelled"
833
  msgstr ""
834
 
835
+ #: inc/lp-core-functions.php:2693
836
  msgid "In Progress"
837
  msgstr ""
838
 
864
  msgstr ""
865
 
866
  #: inc/lp-template-functions.php:1059
867
+ #: inc/admin/settings/class-lp-settings-checkout.php:69
868
  msgid "Order received"
869
  msgstr ""
870
 
883
  msgid "&nbsp;&ndash; Page %s"
884
  msgstr ""
885
 
886
+ #: inc/lp-template-functions.php:1395
887
  msgid "Final"
888
  msgstr ""
889
 
890
+ #: inc/lp-template-functions.php:1404 inc/custom-post-types/abstract.php:457
891
  #: inc/custom-post-types/lesson.php:211
892
  #: inc/libraries/meta-box/inc/fields/oembed.php:70
893
  #: templates/single-course/section/item-meta.php:23
894
  msgid "Preview"
895
  msgstr ""
896
 
897
+ #: inc/lp-template-functions.php:1476
898
  msgid "Overview"
899
  msgstr ""
900
 
901
+ #: inc/lp-template-functions.php:1484
902
  #: inc/admin/views/meta-boxes/course/curriculum.php:8
903
+ #: inc/custom-post-types/course.php:546
904
  msgid "Curriculum"
905
  msgstr ""
906
 
907
+ #: inc/lp-webhooks.php:82
908
+ #, php-format
909
+ msgid "LearnPress webhook %s process completed"
910
+ msgstr ""
911
+
912
+ #: inc/lp-webhooks.php:88
913
  msgid "LearnPress webhook process Complete"
914
  msgstr ""
915
 
936
  #: inc/quiz/class-lp-quiz-factory.php:127
937
  #: inc/quiz/class-lp-quiz-factory.php:162
938
  #: inc/quiz/class-lp-quiz-factory.php:174
939
+ #: inc/quiz/class-lp-quiz-factory.php:371
940
  msgid "Error"
941
  msgstr ""
942
 
985
  msgid "Verify nonce failed"
986
  msgstr ""
987
 
988
+ #: inc/admin/class-lp-admin-ajax.php:745 inc/admin/class-lp-admin-ajax.php:972
989
  #: inc/admin/lp-admin-functions.php:132
990
  msgid "Edit Page"
991
  msgstr ""
992
 
993
+ #: inc/admin/class-lp-admin-ajax.php:746 inc/admin/class-lp-admin-ajax.php:973
994
  #: inc/admin/lp-admin-functions.php:133
995
  msgid "View Page"
996
  msgstr ""
1003
  msgid "Empty page name!"
1004
  msgstr ""
1005
 
1006
+ #: inc/admin/class-lp-admin-ajax.php:837
1007
  msgid ""
1008
  "Something went wrong! Please try again or ask <a href=\"https://wordpress."
1009
  "org/support/\">support forums</a>."
1010
  msgstr ""
1011
 
1012
+ #: inc/admin/class-lp-admin-ajax.php:850
1013
  msgid "Try again!"
1014
  msgstr ""
1015
 
1016
+ #: inc/admin/class-lp-admin-ajax.php:876
1017
  msgid "Import sample data successes."
1018
  msgstr ""
1019
 
1020
+ #: inc/admin/class-lp-admin-ajax.php:876
1021
  msgid "View courses"
1022
  msgstr ""
1023
 
1024
+ #: inc/admin/class-lp-admin-ajax.php:880
1025
  msgid "Import sample data failed. Please try again!."
1026
  msgstr ""
1027
 
1028
+ #: inc/admin/class-lp-admin-ajax.php:884
1029
  msgid ""
1030
  "Unknown error when installing/activating Import/Export addon. Please try "
1031
  "again!"
1032
  msgstr ""
1033
 
1034
+ #: inc/admin/class-lp-admin-ajax.php:900 inc/admin/class-lp-admin-ajax.php:921
1035
+ #: inc/admin/class-lp-admin-ajax.php:941
1036
  msgid ""
1037
  "You do not have sufficient permissions to deactivate plugins for this site."
1038
  msgstr ""
1039
 
1040
+ #: inc/admin/class-lp-admin-ajax.php:1079
1041
  msgid " course has duplicated"
1042
  msgstr ""
1043
 
1368
  #: inc/admin/views/statistics/orders.php:8
1369
  #: inc/admin/views/statistics/users.php:8
1370
  #: inc/admin/views/statistics/users.php:44
1371
+ #: inc/custom-post-types/course.php:1319 inc/custom-post-types/course.php:1325
1372
  msgid "Students"
1373
  msgstr ""
1374
 
1391
 
1392
  #: inc/admin/lp-admin-functions.php:743
1393
  #: inc/admin/views/statistics/courses.php:46
1394
+ #: inc/course/abstract-lp-course.php:563 inc/custom-post-types/course.php:1377
1395
  #: inc/order/lp-order-functions.php:511
1396
  #: inc/shortcodes/featured-courses/templates/cards.php:61
1397
  #: inc/shortcodes/featured-courses/templates/grids.php:69
1549
  msgid "Current Version"
1550
  msgstr ""
1551
 
1552
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:30
1553
  msgid "Total Raised"
1554
  msgstr ""
1555
 
1556
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:45
1557
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:50
1558
  #, php-format
1559
  msgid "%d order"
1560
  msgid_plural "%d orders"
1561
  msgstr[0] ""
1562
  msgstr[1] ""
1563
 
1564
+ #: inc/admin/dashboard-statistics/class-lp-statistic-status.php:63
 
 
 
 
1565
  msgid "Created by: "
1566
  msgstr ""
1567
 
1659
  msgid "Can not create a question"
1660
  msgstr ""
1661
 
1662
+ #: inc/admin/pointers/pointers.php:66 inc/custom-post-types/course.php:551
1663
  #: templates/single-course/curriculum.php:16
1664
  msgid "Course Curriculum"
1665
  msgstr ""
1671
  msgstr ""
1672
 
1673
  #: inc/admin/settings/class-lp-settings-checkout.php:52
1674
+ msgid "Auto enroll"
1675
  msgstr ""
1676
 
1677
  #: inc/admin/settings/class-lp-settings-checkout.php:53
1678
+ msgid "Auto enroll a user after they buy a course."
 
 
1679
  msgstr ""
1680
 
1681
  #: inc/admin/settings/class-lp-settings-checkout.php:59
 
 
 
 
 
 
 
 
1682
  msgid "Checkout page"
1683
  msgstr ""
1684
 
1685
+ #: inc/admin/settings/class-lp-settings-checkout.php:65
1686
  msgid "Checkout Endpoints"
1687
  msgstr ""
1688
 
1689
  #: inc/admin/settings/class-lp-settings-courses.php:32
1690
+ #: inc/custom-post-types/course.php:490
1691
  msgctxt "slug"
1692
  msgid "courses"
1693
  msgstr ""
1775
  msgid "Single course permalink"
1776
  msgstr ""
1777
 
1778
+ #: inc/admin/settings/class-lp-settings-courses.php:154
1779
+ msgid "Course item slug"
1780
+ msgstr ""
1781
+
1782
  #: inc/admin/settings/class-lp-settings-emails.php:39
1783
  msgid "General options"
1784
  msgstr ""
1797
  msgstr ""
1798
 
1799
  #: inc/admin/settings/class-lp-settings-general.php:39
 
 
 
 
 
 
 
 
 
 
 
 
1800
  msgid "Currency"
1801
  msgstr ""
1802
 
1803
+ #: inc/admin/settings/class-lp-settings-general.php:46
1804
  msgid "Currency position"
1805
  msgstr ""
1806
 
1807
+ #: inc/admin/settings/class-lp-settings-general.php:53
1808
  msgid "Thousands Separator"
1809
  msgstr ""
1810
 
1811
+ #: inc/admin/settings/class-lp-settings-general.php:60
1812
  msgid "Decimals Separator"
1813
  msgstr ""
1814
 
1815
+ #: inc/admin/settings/class-lp-settings-general.php:67
1816
  msgid "Number of Decimals"
1817
  msgstr ""
1818
 
1819
+ #: inc/admin/settings/class-lp-settings-general.php:74
1820
  msgid "Load css"
1821
  msgstr ""
1822
 
1823
+ #: inc/admin/settings/class-lp-settings-general.php:78
1824
  msgid "Load default stylesheet for LearnPress"
1825
  msgstr ""
1826
 
1827
+ #: inc/admin/settings/class-lp-settings-general.php:81
1828
  msgid "Debug mode"
1829
  msgstr ""
1830
 
1831
+ #: inc/admin/settings/class-lp-settings-general.php:85
1832
  msgid "Turn on/off debug mode for developer"
1833
  msgstr ""
1834
 
1930
  msgid "Ratio"
1931
  msgstr ""
1932
 
 
 
 
 
1933
  #: inc/admin/settings/class-lp-settings-pages.php:154
1934
  msgid "Endpoints"
1935
  msgstr ""
2077
  #: inc/admin/views/meta-boxes/quiz/question.php:36
2078
  #: inc/libraries/meta-box/inc/fields/file-input.php:38
2079
  #: inc/question/abstract-lp-question.php:653 templates/cart/form.php:72
2080
+ #: templates/profile/tabs/edit/avatar.php:60
2081
  msgid "Remove"
2082
  msgstr ""
2083
 
2250
  msgstr ""
2251
 
2252
  #: inc/admin/views/meta-boxes/course/editor.php:62
2253
+ #: inc/custom-post-types/course.php:1318 inc/custom-post-types/course.php:1324
2254
  msgid "Content"
2255
  msgstr ""
2256
 
2269
  #: inc/admin/views/meta-boxes/course/loop-section.php:71
2270
  #: inc/admin/views/meta-boxes/quiz/js-template.php:6
2271
  #: inc/admin/views/meta-boxes/quiz/questions.php:36
2272
+ #: inc/custom-post-types/course.php:482 inc/custom-post-types/lesson.php:97
2273
  #: inc/custom-post-types/order.php:419 inc/custom-post-types/question.php:100
2274
  msgid "Add New"
2275
  msgstr ""
2300
  msgstr ""
2301
 
2302
  #: inc/admin/views/meta-boxes/course/loop-item.php:49
2303
+ #: inc/custom-post-types/course.php:431
2304
  msgid "Are you sure you want to remove this item?"
2305
  msgstr ""
2306
 
2357
  msgstr ""
2358
 
2359
  #: inc/admin/views/meta-boxes/course/review-log.php:25
2360
+ #: inc/custom-post-types/course.php:433
2361
  msgid "Your course is pending for reviewing"
2362
  msgstr ""
2363
 
2759
  msgid "Plain text template"
2760
  msgstr ""
2761
 
2762
+ #: inc/admin/views/settings/emails/email-template.php:52
 
2763
  #, php-format
2764
  msgid ""
2765
  "This template has been overridden by your theme and can be found in: <code>"
2766
+ "%s</code>. <br />Please open the file in an editor program to edit"
2767
  msgstr ""
2768
 
2769
+ #: inc/admin/views/settings/emails/email-template.php:77
2770
  msgid "Click on variables to add it into email content"
2771
  msgstr ""
2772
 
2773
+ #: inc/admin/views/settings/emails/email-template.php:87
2774
+ #: inc/admin/views/settings/emails/_email-template.php:78
2775
  #, php-format
2776
  msgid ""
2777
  "To override and edit this email template copy <code>%s</code> to your theme "
2926
  msgid "Send email to user when the order is completed."
2927
  msgstr ""
2928
 
2929
+ #: inc/admin/views/settings/emails/_email-template.php:36
2930
+ #, php-format
2931
+ msgid ""
2932
+ "This template has been overridden by your theme and can be found in: <code>"
2933
+ "%s</code>. Please open the file in an editor program to edit"
2934
+ msgstr ""
2935
+
2936
+ #: inc/admin/views/settings/emails/_email-template.php:63
2937
  #, php-format
2938
  msgid ""
2939
  "This template has been overridden by your theme and can be found in: <code>"
2940
  "%s</code>."
2941
  msgstr ""
2942
 
2943
+ #: inc/admin/views/settings/emails/_email-template.php:68
2944
  msgid "Delete template file"
2945
  msgstr ""
2946
 
2947
+ #: inc/admin/views/settings/emails/_email-template.php:83
2948
  msgid "Copy file to theme"
2949
  msgstr ""
2950
 
2951
+ #: inc/admin/views/settings/emails/_email-template.php:89
2952
  msgid "File was not found."
2953
  msgstr ""
2954
 
3146
  msgid "Sorry! This course is not purchasable."
3147
  msgstr ""
3148
 
3149
+ #: inc/cart/class-lp-cart.php:249
 
 
 
 
3150
  msgid "Cart page is not setting up."
3151
  msgstr ""
3152
 
3153
+ #: inc/cart/class-lp-cart.php:252 templates/cart/empty-cart.php:19
3154
  msgid "Back to class"
3155
  msgstr ""
3156
 
3157
+ #: inc/cart/class-lp-cart.php:257 inc/cart/class-lp-cart.php:267
3158
  msgid "Checkout page is not setting up."
3159
  msgstr ""
3160
 
3161
+ #: inc/cart/class-lp-cart.php:259
3162
  msgid "View cart"
3163
  msgstr ""
3164
 
3165
+ #: inc/cart/class-lp-cart.php:262
3166
  #, php-format
3167
  msgid "<strong>%s</strong> has been added to your cart. %s"
3168
  msgstr ""
3169
 
3170
+ #: inc/cart/class-lp-cart.php:554
3171
  msgid "Checkout page is not setup"
3172
  msgstr ""
3173
 
3203
  msgid "The function %s doesn't exists"
3204
  msgstr ""
3205
 
3206
+ #: inc/course/abstract-lp-course.php:1109
3207
  #, php-format
3208
  msgid "%d of %d items completed"
3209
  msgstr ""
3210
 
3211
+ #: inc/course/abstract-lp-course.php:1112
3212
+ #: inc/course/abstract-lp-course.php:1114
3213
  #, php-format
3214
  msgid "%d%% completed"
3215
  msgstr ""
3216
 
3217
+ #: inc/course/abstract-lp-course.php:1402
3218
  #, php-format
3219
  msgid "This course will end within %s next"
3220
  msgstr ""
3224
  msgid "Are you sure you want to finish course %s?"
3225
  msgstr ""
3226
 
3227
+ #: inc/course/class-lp-course.php:32 templates/single-course/buttons.php:66
3228
  msgid "Finish course"
3229
  msgstr ""
3230
 
3271
  "will reload"
3272
  msgstr ""
3273
 
3274
+ #: inc/course/lp-course-functions.php:142
3275
  msgctxt "slug"
3276
  msgid "uncategorized"
3277
  msgstr ""
3278
 
3279
+ #: inc/course/lp-course-functions.php:187
3280
  #, php-format
3281
  msgid "The course %d does not exists"
3282
  msgstr ""
3283
 
3284
+ #: inc/course/lp-course-functions.php:645
3285
  msgid "Course item navigation"
3286
  msgstr ""
3287
 
3288
+ #: inc/course/lp-course-functions.php:652
3289
  #: templates/content-quiz/buttons.php:31
3290
  msgid "Previous"
3291
  msgstr ""
3292
 
3293
+ #: inc/course/lp-course-functions.php:652
3294
  msgid "Previous post:"
3295
  msgstr ""
3296
 
3297
+ #: inc/course/lp-course-functions.php:660
3298
+ #: templates/content-lesson/__next-button.php:10
3299
  #: templates/content-quiz/buttons.php:32
3300
  msgid "Next"
3301
  msgstr ""
3302
 
3303
+ #: inc/course/lp-course-functions.php:660
3304
  msgid "Next post:"
3305
  msgstr ""
3306
 
 
3307
  #: inc/custom-post-types/abstract.php:417
3308
+ #: inc/custom-post-types/abstract.php:420
3309
  msgid "updated."
3310
  msgstr ""
3311
 
3312
+ #: inc/custom-post-types/abstract.php:418
3313
  msgid "Custom field updated."
3314
  msgstr ""
3315
 
3316
+ #: inc/custom-post-types/abstract.php:419
3317
  msgid "Custom field deleted."
3318
  msgstr ""
3319
 
3320
+ #: inc/custom-post-types/abstract.php:422
3321
  #, php-format
3322
  msgid "Lesson restored to revision from %s"
3323
  msgstr ""
3324
 
3325
+ #: inc/custom-post-types/abstract.php:423
3326
  msgid "published."
3327
  msgstr ""
3328
 
3329
+ #: inc/custom-post-types/abstract.php:424
3330
  msgid "saved."
3331
  msgstr ""
3332
 
3333
+ #: inc/custom-post-types/abstract.php:425
3334
  msgid "submitted."
3335
  msgstr ""
3336
 
3337
+ #: inc/custom-post-types/abstract.php:427
3338
  #, php-format
3339
  msgid "scheduled for: <strong>%1$s</strong>."
3340
  msgstr ""
3341
 
3342
+ #: inc/custom-post-types/abstract.php:429
3343
  msgid "M j, Y @ G:i"
3344
  msgstr ""
3345
 
3346
+ #: inc/custom-post-types/abstract.php:431
3347
  msgid "draft updated."
3348
  msgstr ""
3349
 
3350
+ #: inc/custom-post-types/abstract.php:437
3351
+ #: inc/custom-post-types/abstract.php:446 inc/custom-post-types/lesson.php:246
3352
  #: inc/custom-post-types/question.php:279 inc/custom-post-types/quiz.php:350
3353
  #: templates/profile/tabs/orders.php:39
3354
  msgid "View"
3455
  msgid "course-tag"
3456
  msgstr ""
3457
 
3458
+ #: inc/custom-post-types/course.php:358
3459
  msgid "Sorry! You can not update a course while it is viewing!"
3460
  msgstr ""
3461
 
3462
+ #: inc/custom-post-types/course.php:394
3463
  msgid "Toggle Course Content"
3464
  msgstr ""
3465
 
3466
+ #: inc/custom-post-types/course.php:411
3467
  msgid "Please enter the title of the course"
3468
  msgstr ""
3469
 
3470
+ #: inc/custom-post-types/course.php:412
3471
  msgid "Please add at least one section for the course"
3472
  msgstr ""
3473
 
3474
+ #: inc/custom-post-types/course.php:413
3475
  msgid "Please enter the title of the section"
3476
  msgstr ""
3477
 
3478
+ #: inc/custom-post-types/course.php:414
3479
  msgid "Please set a price for this course"
3480
  msgstr ""
3481
 
3482
+ #: inc/custom-post-types/course.php:432
3483
  msgid "You course will become to Pending"
3484
  msgstr ""
3485
 
3486
+ #: inc/custom-post-types/course.php:475
3487
  msgctxt "Post Type General Name"
3488
  msgid "Courses"
3489
  msgstr ""
3490
 
3491
+ #: inc/custom-post-types/course.php:476
3492
  msgctxt "Post Type Singular Name"
3493
  msgid "Course"
3494
  msgstr ""
3495
 
3496
+ #: inc/custom-post-types/course.php:478
3497
  msgid "Parent Item:"
3498
  msgstr ""
3499
 
3500
+ #: inc/custom-post-types/course.php:480
3501
  msgid "View Course"
3502
  msgstr ""
3503
 
3504
+ #: inc/custom-post-types/course.php:481
3505
  msgid "Add New Course"
3506
  msgstr ""
3507
 
3508
+ #: inc/custom-post-types/course.php:483
3509
  msgid "Edit Course"
3510
  msgstr ""
3511
 
3512
+ #: inc/custom-post-types/course.php:484
3513
  msgid "Update Course"
3514
  msgstr ""
3515
 
3516
+ #: inc/custom-post-types/course.php:485
3517
  msgid "Search Courses"
3518
  msgstr ""
3519
 
3520
+ #: inc/custom-post-types/course.php:486
3521
  #, php-format
3522
  msgid ""
3523
  "You have not got any courses yet. Click <a href=\"%s\">Add new</a> to start"
3524
  msgstr ""
3525
 
3526
+ #: inc/custom-post-types/course.php:487
3527
  msgid "No course found in Trash"
3528
  msgstr ""
3529
 
3530
+ #: inc/custom-post-types/course.php:574 inc/custom-post-types/quiz.php:146
3531
  msgid "General Settings"
3532
  msgstr ""
3533
 
3534
+ #: inc/custom-post-types/course.php:579 inc/custom-post-types/lesson.php:209
3535
  #: inc/custom-post-types/quiz.php:165 inc/custom-post-types/quiz.php:319
3536
  msgid "Duration"
3537
  msgstr ""
3538
 
3539
+ #: inc/custom-post-types/course.php:582
3540
  msgid "The duration of the course (by weeks)."
3541
  msgstr ""
3542
 
3543
+ #: inc/custom-post-types/course.php:586
3544
  msgid "Maximum students"
3545
  msgstr ""
3546
 
3547
+ #: inc/custom-post-types/course.php:589
3548
  msgid "Maximum number of students who can enroll in this course."
3549
  msgstr ""
3550
 
3551
+ #: inc/custom-post-types/course.php:593
3552
  msgid "Students enrolled"
3553
  msgstr ""
3554
 
3555
+ #: inc/custom-post-types/course.php:596
3556
  msgid "How many students have taken this course."
3557
  msgstr ""
3558
 
3559
+ #: inc/custom-post-types/course.php:600
3560
  msgid "Re-take course"
3561
  msgstr ""
3562
 
3563
+ #: inc/custom-post-types/course.php:603
3564
  msgid "How many times the user can re-take this course. Set to 0 to disable."
3565
  msgstr ""
3566
 
3567
+ #: inc/custom-post-types/course.php:607
3568
  msgid "Featured"
3569
  msgstr ""
3570
 
3571
+ #: inc/custom-post-types/course.php:610
3572
  msgid "Set course as featured."
3573
  msgstr ""
3574
 
3575
+ #: inc/custom-post-types/course.php:628
3576
  msgid "The method to assess the result of a student for a course."
3577
  msgstr ""
3578
 
3579
+ #: inc/custom-post-types/course.php:630
3580
  msgid ""
3581
  "<br /><strong>Note! </strong>No final quiz in course, please add a final quiz"
3582
  msgstr ""
3583
 
3584
+ #: inc/custom-post-types/course.php:634
3585
  msgid "Assessment"
3586
  msgstr ""
3587
 
3588
+ #: inc/custom-post-types/course.php:639
3589
  msgid "Course result"
3590
  msgstr ""
3591
 
3592
+ #: inc/custom-post-types/course.php:644
3593
  msgid "Evaluate lessons"
3594
  msgstr ""
3595
 
3596
+ #: inc/custom-post-types/course.php:645
3597
  msgid "Evaluate result of quizzes"
3598
  msgstr ""
3599
 
3600
+ #: inc/custom-post-types/course.php:646
3601
  msgid "Evaluate the result of the final quiz"
3602
  msgstr ""
3603
 
3604
+ #: inc/custom-post-types/course.php:651
3605
  msgid "Passing condition value"
3606
  msgstr ""
3607
 
3608
+ #: inc/custom-post-types/course.php:656
3609
  msgid ""
3610
  "The percentage of quiz result or lessons completed to finish the course."
3611
  msgstr ""
3612
 
3613
+ #: inc/custom-post-types/course.php:677
3614
  msgid "Payment Settings"
3615
  msgstr ""
3616
 
3617
+ #: inc/custom-post-types/course.php:682
3618
  msgid "Course payment"
3619
  msgstr ""
3620
 
3621
+ #: inc/custom-post-types/course.php:712
3622
  #, php-format
3623
  msgid ""
3624
  "This course is requires enrollment and the suggested price is <strong>%s</"
3625
  "strong>"
3626
  msgstr ""
3627
 
3628
+ #: inc/custom-post-types/course.php:720
3629
  msgid "This course is free."
3630
  msgstr ""
3631
 
3632
+ #: inc/custom-post-types/course.php:726 inc/custom-post-types/course.php:1320
3633
+ #: inc/custom-post-types/course.php:1326 templates/cart/form.php:30
3634
  #: templates/emails/order-items-table.php:21
3635
  msgid "Price"
3636
  msgstr ""
3637
 
3638
+ #: inc/custom-post-types/course.php:736
3639
  msgid "Sale Price"
3640
  msgstr ""
3641
 
3642
+ #: inc/custom-post-types/course.php:741
3643
  msgid "Schedule"
3644
  msgstr ""
3645
 
3646
+ #: inc/custom-post-types/course.php:746
3647
  msgid "Sale start date"
3648
  msgstr ""
3649
 
3650
+ #: inc/custom-post-types/course.php:753
3651
  msgid "Sale end date"
3652
  msgstr ""
3653
 
3654
+ #: inc/custom-post-types/course.php:764
3655
  msgid "Price set by Admin"
3656
  msgstr ""
3657
 
3658
+ #: inc/custom-post-types/course.php:768
3659
  msgid "Not set"
3660
  msgstr ""
3661
 
3662
+ #: inc/custom-post-types/course.php:771
3663
  msgid "Course Suggestion Price"
3664
  msgstr ""
3665
 
3666
+ #: inc/custom-post-types/course.php:776
3667
  msgid "The course price you want to suggest for admin to set."
3668
  msgstr ""
3669
 
3670
+ #: inc/custom-post-types/course.php:786
3671
  msgid "Requires enroll"
3672
  msgstr ""
3673
 
3674
+ #: inc/custom-post-types/course.php:789
3675
  msgid "Require users logged in to study or public to all."
3676
  msgstr ""
3677
 
3678
+ #: inc/custom-post-types/course.php:828
3679
  msgid "Author Settings"
3680
  msgstr ""
3681
 
3682
+ #: inc/custom-post-types/course.php:833 inc/custom-post-types/course.php:1317
3683
+ #: inc/custom-post-types/course.php:1323 inc/custom-post-types/lesson.php:204
3684
  #: inc/custom-post-types/question.php:243 inc/custom-post-types/quiz.php:316
3685
  msgid "Author"
3686
  msgstr ""
3687
 
3688
+ #: inc/custom-post-types/course.php:857
 
 
 
 
3689
  msgid "Review Logs"
3690
  msgstr ""
3691
 
3692
+ #: inc/custom-post-types/course.php:1014
3693
  msgid "Course Curriculum only appear if course is saved"
3694
  msgstr ""
3695
 
3696
+ #: inc/custom-post-types/course.php:1172
3697
  msgid "Course has approved by Reviewer"
3698
  msgstr ""
3699
 
3700
+ #: inc/custom-post-types/course.php:1177
3701
  msgid "Course has rejected by Reviewer"
3702
  msgstr ""
3703
 
3704
+ #: inc/custom-post-types/course.php:1182
3705
  #, php-format
3706
  msgid "Course has submitted by %s"
3707
  msgstr ""
3708
 
3709
+ #: inc/custom-post-types/course.php:1187
3710
  msgid "Course has updated by Reviewer"
3711
  msgstr ""
3712
 
3713
+ #: inc/custom-post-types/course.php:1224
3714
  msgid "Your course has been published"
3715
  msgstr ""
3716
 
3717
+ #: inc/custom-post-types/course.php:1352
3718
  #, php-format
3719
  msgctxt "learnpress"
3720
  msgid "%d section"
3722
  msgstr[0] ""
3723
  msgstr[1] ""
3724
 
3725
+ #: inc/custom-post-types/course.php:1355
3726
  #, php-format
3727
  msgctxt "learnpress"
3728
  msgid "%d lesson"
3730
  msgstr[0] ""
3731
  msgstr[1] ""
3732
 
3733
+ #: inc/custom-post-types/course.php:1357
3734
  msgid "0 lesson"
3735
  msgstr ""
3736
 
3737
+ #: inc/custom-post-types/course.php:1361
3738
  #, php-format
3739
  msgctxt "learnpress"
3740
  msgid "%d quiz"
3742
  msgstr[0] ""
3743
  msgstr[1] ""
3744
 
3745
+ #: inc/custom-post-types/course.php:1363
3746
  msgid "0 quiz"
3747
  msgstr ""
3748
 
3749
+ #: inc/custom-post-types/course.php:1368
3750
  msgid "No content"
3751
  msgstr ""
3752
 
3753
+ #: inc/custom-post-types/course.php:1528
3754
  msgid "Course Video"
3755
  msgstr ""
3756
 
3757
+ #: inc/custom-post-types/course.php:1533
3758
  msgid "Video ID"
3759
  msgstr ""
3760
 
3761
+ #: inc/custom-post-types/course.php:1536
3762
  msgid "The id of Youtube or Vimeo video"
3763
  msgstr ""
3764
 
3765
+ #: inc/custom-post-types/course.php:1540
3766
  msgid "Video Type"
3767
  msgstr ""
3768
 
3769
+ #: inc/custom-post-types/course.php:1543
3770
  msgid "Chose video type"
3771
  msgstr ""
3772
 
3773
+ #: inc/custom-post-types/course.php:1546
3774
  msgid "Youtube"
3775
  msgstr ""
3776
 
3777
+ #: inc/custom-post-types/course.php:1547
3778
  msgid "Vimeo"
3779
  msgstr ""
3780
 
3781
+ #: inc/custom-post-types/course.php:1551
3782
  msgid "Embed width"
3783
  msgstr ""
3784
 
3785
+ #: inc/custom-post-types/course.php:1554
3786
  msgid "Set width of embed"
3787
  msgstr ""
3788
 
3789
+ #: inc/custom-post-types/course.php:1558
3790
  msgid "Embed height"
3791
  msgstr ""
3792
 
3793
+ #: inc/custom-post-types/course.php:1561
3794
  msgid "Set height of embed"
3795
  msgstr ""
3796
 
3913
  msgid "Add New Order"
3914
  msgstr ""
3915
 
3916
+ #: inc/custom-post-types/order.php:416 inc/custom-post-types/order.php:506
3917
  #: templates/order/order-details.php:13
3918
  msgid "Order Details"
3919
  msgstr ""
3934
  msgid "No order found in Trash"
3935
  msgstr ""
3936
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3937
  #: inc/custom-post-types/order.php:507
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3938
  msgid "Order Actions"
3939
  msgstr ""
3940
 
4215
  msgid "Your order {{order_number}} is completed"
4216
  msgstr ""
4217
 
4218
+ #: inc/emails/class-lp-email.php:333
4219
  msgid "Template file copied to theme."
4220
  msgstr ""
4221
 
4222
+ #: inc/emails/class-lp-email.php:348
4223
  msgid "Template file deleted from theme."
4224
  msgstr ""
4225
 
4226
+ #: inc/emails/class-lp-email.php:552
4227
  msgid "Could not write to template file."
4228
  msgstr ""
4229
 
4256
  msgid "Extensions"
4257
  msgstr ""
4258
 
4259
+ #: inc/libraries/meta-box/inc/field.php:236
4260
  msgid "+"
4261
  msgstr ""
4262
 
4263
+ #: inc/libraries/meta-box/inc/field.php:245
4264
  msgid "&#8211;"
4265
  msgstr ""
4266
 
4422
  msgid "Invalid order status"
4423
  msgstr ""
4424
 
4425
+ #: inc/order/lp-order-functions.php:662
4426
  msgctxt "Order status"
4427
  msgid "Pending"
4428
  msgstr ""
4429
 
4430
+ #: inc/order/lp-order-functions.php:663 inc/order/lp-order-functions.php:685
4431
+ msgctxt "Order status"
4432
+ msgid "Processing"
4433
+ msgstr ""
4434
+
4435
+ #: inc/order/lp-order-functions.php:664 inc/order/lp-order-functions.php:677
4436
+ msgctxt "Order status"
4437
+ msgid "Completed"
4438
+ msgstr ""
4439
+
4440
+ #: inc/order/lp-order-functions.php:665 inc/order/lp-order-functions.php:701
4441
+ msgctxt "Order status"
4442
+ msgid "Cancelled"
4443
+ msgstr ""
4444
+
4445
+ #: inc/order/lp-order-functions.php:682
4446
+ #, php-format
4447
+ msgid "Completed <span class=\"count\">(%s)</span>"
4448
+ msgid_plural "Completed <span class=\"count\">(%s)</span>"
4449
+ msgstr[0] ""
4450
+ msgstr[1] ""
4451
+
4452
+ #: inc/order/lp-order-functions.php:690
4453
+ #, php-format
4454
+ msgid "Processing <span class=\"count\">(%s)</span>"
4455
+ msgid_plural "Processing <span class=\"count\">(%s)</span>"
4456
+ msgstr[0] ""
4457
+ msgstr[1] ""
4458
+
4459
+ #: inc/order/lp-order-functions.php:693
4460
+ msgctxt "Order status"
4461
+ msgid "Pending Payment"
4462
+ msgstr ""
4463
+
4464
+ #: inc/order/lp-order-functions.php:698
4465
+ #, php-format
4466
+ msgid "Pending Payment <span class=\"count\">(%s)</span>"
4467
+ msgid_plural "Pending Payment <span class=\"count\">(%s)</span>"
4468
+ msgstr[0] ""
4469
+ msgstr[1] ""
4470
+
4471
+ #: inc/order/lp-order-functions.php:706
4472
+ #, php-format
4473
+ msgid "Cancelled <span class=\"count\">(%s)</span>"
4474
+ msgid_plural "Cancelled <span class=\"count\">(%s)</span>"
4475
+ msgstr[0] ""
4476
+ msgstr[1] ""
4477
+
4478
+ #: inc/order/lp-order-functions.php:738
4479
  msgid ""
4480
  "Order received in case user buy a course but doesn't finalise the order."
4481
  msgstr ""
4482
 
4483
+ #: inc/order/lp-order-functions.php:739
4484
  msgid "Payment received and the order is awaiting fulfillment."
4485
  msgstr ""
4486
 
4487
+ #: inc/order/lp-order-functions.php:740
4488
  msgid "Order fulfilled and complete."
4489
  msgstr ""
4490
 
4491
+ #: inc/order/lp-order-functions.php:741
4492
  msgid "The order is cancelled by an admin or the customer."
4493
  msgstr ""
4494
 
4495
+ #: inc/order/lp-order-functions.php:784
4496
  #, php-format
4497
  msgid "You have enrolled in this course. <a href=\"%s\">Order details</a>"
4498
  msgstr ""
4609
  msgid "Retake quiz failed"
4610
  msgstr ""
4611
 
4612
+ #: inc/quiz/class-lp-quiz-factory.php:371
4613
  #, php-format
4614
  msgid ""
4615
  "Action %s failed! Please contact site's administrator for more information."
4712
  msgid "Create quiz history need pass course ID"
4713
  msgstr ""
4714
 
4715
+ #: inc/user/abstract-lp-user.php:1106 inc/user/abstract-lp-user.php:1420
4716
+ #: inc/user/abstract-lp-user.php:1432
4717
  #, php-format
4718
  msgid "The role %s for user doesn't exists"
4719
  msgstr ""
4720
 
4721
+ #: inc/user/abstract-lp-user.php:1824
4722
  msgid "You have already completed this lesson"
4723
  msgstr ""
4724
 
4776
  msgid "Profile picture is changed"
4777
  msgstr ""
4778
 
4779
+ #: inc/user/lp-user-functions.php:787 inc/user/lp-user-functions.php:1195
4780
  msgid "Old password incorrect!"
4781
  msgstr ""
4782
 
4783
+ #: inc/user/lp-user-functions.php:800 inc/user/lp-user-functions.php:1201
4784
  msgid "Confirmation password incorrect!"
4785
  msgstr ""
4786
 
4787
+ #: inc/user/lp-user-functions.php:818 inc/user/lp-user-functions.php:1164
4788
  msgid "Your change is saved"
4789
  msgstr ""
4790
 
4791
+ #: inc/user/lp-user-functions.php:826 inc/user/lp-user-functions.php:1166
4792
  msgid "Error on update your profile info"
4793
  msgstr ""
4794
 
4795
+ #: inc/user/lp-user-functions.php:929
4796
  msgid "Please login to enroll this course"
4797
  msgstr ""
4798
 
4799
+ #: inc/user/lp-user-functions.php:947
4800
  msgid "You have already finished course"
4801
  msgstr ""
4802
 
4803
+ #: inc/user/lp-user-functions.php:950
4804
  msgid "You have already enrolled in this course"
4805
  msgstr ""
4806
 
4807
+ #: inc/user/lp-user-functions.php:1142
4808
  msgid "Your avatar updated"
4809
  msgstr ""
4810
 
4811
+ #: inc/user/lp-user-functions.php:1208
4812
  msgid "Your password updated"
4813
  msgstr ""
4814
 
4815
+ #: inc/user/lp-user-functions.php:1210
4816
  msgid "Change your password failed"
4817
  msgstr ""
4818
 
5134
  msgid "This lesson has no content"
5135
  msgstr ""
5136
 
5137
+ #: templates/content-lesson/__complete-button.php:66
5138
+ #: templates/single-course/content-item-lp_lesson.php:33
5139
+ msgid "Complete"
5140
+ msgstr ""
5141
+
5142
+ #: templates/content-lesson/__prev-button.php:11
5143
+ msgid "Prev"
5144
+ msgstr ""
5145
+
5146
  #: templates/content-question/explanation.php:19
5147
  msgid "Explanation:"
5148
  msgstr ""
5376
  msgid "Passing condition: %s%%"
5377
  msgstr ""
5378
 
5379
+ #: templates/profile/tabs/edit/avatar.php:58
 
 
 
 
5380
  msgid "Upload"
5381
  msgstr ""
5382
 
5426
  msgid "Enroll"
5427
  msgstr ""
5428
 
5429
+ #: templates/single-course/buttons.php:27
5430
+ msgid ""
5431
+ "The class is full so the enrollment is close. Please contact the site admin."
5432
+ msgstr ""
5433
+
5434
+ #: templates/single-course/buttons.php:44
5435
  #, php-format
5436
  msgid "Retake course (+%d)"
5437
  msgstr ""
5438
 
5439
+ #: templates/single-course/buttons.php:103
5440
  msgid "You have purchased this course. Please wait for approval."
5441
  msgstr ""
5442
 
5443
+ #: templates/single-course/buttons.php:105
5444
  msgid "Sorry, you can not purchase this course"
5445
  msgstr ""
5446
 
 
 
 
 
5447
  #: templates/single-course/content-item-lp_quiz.php:55
5448
  msgid "No questions"
5449
  msgstr ""
learnpress.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: LearnPress
4
  Plugin URI: http://thimpress.com/learnpress
5
  Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
6
  Author: ThimPress
7
- Version: 2.1.1
8
  Author URI: http://thimpress.com
9
  Requires at least: 3.8
10
  Tested up to: 4.7
@@ -118,8 +118,7 @@ if ( !class_exists( 'LearnPress' ) ) {
118
  $this->includes();
119
  // hooks
120
  $this->init_hooks();
121
- // let third parties know that we're ready
122
- do_action( 'learn_press_ready' );
123
  }
124
 
125
  public function __get( $key ) {
@@ -211,8 +210,8 @@ if ( !class_exists( 'LearnPress' ) ) {
211
  // Register custom-post-type and taxonomies
212
  require_once 'inc/custom-post-types/abstract.php';
213
  require_once 'inc/custom-post-types/course.php';
214
- require_once 'inc/custom-post-types/lesson.php';
215
- require_once 'inc/custom-post-types/quiz.php';
216
  require_once 'inc/custom-post-types/question.php';
217
  require_once 'inc/custom-post-types/order.php';
218
  }
@@ -246,6 +245,8 @@ if ( !class_exists( 'LearnPress' ) ) {
246
  }
247
 
248
  public function loaded() {
 
 
249
  do_action( 'learn_press_loaded', $this );
250
  }
251
 
@@ -253,10 +254,7 @@ if ( !class_exists( 'LearnPress' ) ) {
253
  * Load metabox library
254
  */
255
  public function load_meta_box() {
256
- if ( !defined( 'RWMB_VER' ) ) {
257
- require_once 'inc/libraries/meta-box/meta-box.php';
258
- do_action( 'learn_press_meta_box_loaded' );
259
- }
260
  }
261
 
262
  /**
@@ -394,7 +392,7 @@ if ( !class_exists( 'LearnPress' ) ) {
394
  case 'frontend' :
395
  return ( !is_admin() || defined( 'LP_DOING_AJAX' ) ) && !defined( 'DOING_CRON' );
396
  default:
397
- return strtolower($_SERVER['REQUEST_METHOD']) == $type;
398
  }
399
  }
400
 
@@ -689,4 +687,4 @@ function load_learn_press() {
689
  * Done! entry point of the plugin
690
  * Create new instance of LearnPress and put it to global
691
  */
692
- $GLOBALS['LearnPress'] = LP();
4
  Plugin URI: http://thimpress.com/learnpress
5
  Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
6
  Author: ThimPress
7
+ Version: 2.1.2
8
  Author URI: http://thimpress.com
9
  Requires at least: 3.8
10
  Tested up to: 4.7
118
  $this->includes();
119
  // hooks
120
  $this->init_hooks();
121
+
 
122
  }
123
 
124
  public function __get( $key ) {
210
  // Register custom-post-type and taxonomies
211
  require_once 'inc/custom-post-types/abstract.php';
212
  require_once 'inc/custom-post-types/course.php';
213
+ require_once 'inc/custom-post-types/lesson.php';
214
+ require_once 'inc/custom-post-types/quiz.php';
215
  require_once 'inc/custom-post-types/question.php';
216
  require_once 'inc/custom-post-types/order.php';
217
  }
245
  }
246
 
247
  public function loaded() {
248
+ // let third parties know that we're ready
249
+ do_action( 'learn_press_ready' );
250
  do_action( 'learn_press_loaded', $this );
251
  }
252
 
254
  * Load metabox library
255
  */
256
  public function load_meta_box() {
257
+ require_once 'inc/libraries/meta-box/meta-box.php';
 
 
 
258
  }
259
 
260
  /**
392
  case 'frontend' :
393
  return ( !is_admin() || defined( 'LP_DOING_AJAX' ) ) && !defined( 'DOING_CRON' );
394
  default:
395
+ return strtolower( $_SERVER['REQUEST_METHOD'] ) == $type;
396
  }
397
  }
398
 
687
  * Done! entry point of the plugin
688
  * Create new instance of LearnPress and put it to global
689
  */
690
+ $GLOBALS['LearnPress'] = LP();
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link:
4
  Tags: WordPress LMS, LMS, eLearning, e-Learning, Learning Management System, LMS WordPress, Course, Courses, Quiz, Quizzes, Training, Guru, Sell Courses
5
  Requires at least: 3.8
6
  Tested up to: 4.7
7
- Stable tag: 2.1.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -22,7 +22,7 @@ LearnPress is free and always be free, but it has premium high quality WordPress
22
 
23
  > Or you can [buy Education WP theme](http://themeforest.net/item/education-wordpress-theme-education-wp/14058034?utm_source=wporg&utm_medium=learnpressDC&ref=thimpress&utm_campaign=learnpress) for only 64$ and get all of them.
24
 
25
- > **HOT!!** [WordPress theme for Coaches, Trainers, Teachers - Coaching WP](https://themeforest.net/item/speaker-and-life-coach-wordpress-theme-coaching-wp/17097658?utm_source=wporg&utm_medium=learnpressDC&ref=thimpress&utm_campaign=learnpress) is also FOR SALE at only $59, LearnPress included.
26
 
27
  ###LMS & Education WordPress Themes###
28
 
@@ -193,6 +193,16 @@ https://www.transifex.com/projects/p/learnpress/
193
  8. Add-ons of LearnPress.
194
 
195
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
196
  = 2.1.1 =
197
  + Added options to change value of lessons/quizzes in course item permalink
198
  + Improved edit profile page
4
  Tags: WordPress LMS, LMS, eLearning, e-Learning, Learning Management System, LMS WordPress, Course, Courses, Quiz, Quizzes, Training, Guru, Sell Courses
5
  Requires at least: 3.8
6
  Tested up to: 4.7
7
+ Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
22
 
23
  > Or you can [buy Education WP theme](http://themeforest.net/item/education-wordpress-theme-education-wp/14058034?utm_source=wporg&utm_medium=learnpressDC&ref=thimpress&utm_campaign=learnpress) for only 64$ and get all of them.
24
 
25
+ > **HOT!!** [WordPress theme for Coaches, Trainers, Teachers - Coaching WP](https://themeforest.net/item/speaker-and-life-coach-wordpress-theme-coaching-wp/17097658?utm_source=wporg&utm_medium=learnpressDC&ref=thimpress&utm_campaign=learnpress) is also FOR SALE at only $39, LearnPress included.
26
 
27
  ###LMS & Education WordPress Themes###
28
 
193
  8. Add-ons of LearnPress.
194
 
195
  == Changelog ==
196
+ = 2.1.2 =
197
+ + Fixed Assign course's items to user when assigning course
198
+ + Fixed Options to change key 'lessons' and 'quizzes' when viewing a lesson/quiz in a course.
199
+ + Fixed Course pagination issue in some case
200
+ + Fixed Can not add to cart for non-loggedin user (woocommerce addon)
201
+ + Fixed Broken cert when previewing to print in single course (Certificate)
202
+ + Fixed Paid memberships show user as deleted after buying course (Paid membership)
203
+ + Fixed overwrite templates issue (Paid membership)
204
+ + Fixed "page isn’t working" when creating a new post type (conflict with metabox in the-7 theme)
205
+
206
  = 2.1.1 =
207
  + Added options to change value of lessons/quizzes in course item permalink
208
  + Improved edit profile page
templates/single-course/buttons.php CHANGED
@@ -1,106 +1,111 @@
1
- <?php
2
- /**
3
- * Template for displaying the enroll button
4
- *
5
- * @author ThimPress
6
- * @package LearnPress/Templates
7
- * @version 2.0.6
8
- */
9
-
10
- if ( !defined( 'ABSPATH' ) ) {
11
- exit; // Exit if accessed directly
12
- }
13
-
14
- $course = LP()->global['course'];
15
-
16
- if ( !$course->is_required_enroll() ) {
17
- return;
18
- }
19
-
20
- $course_status = learn_press_get_user_course_status();
21
- $user = learn_press_get_current_user();
22
- $in_cart = learn_press_is_added_to_cart( $course->id );
23
- // only show enroll button if user had not enrolled
24
- $purchase_button_text = apply_filters( 'learn_press_purchase_button_text', __( 'Buy this course', 'learnpress' ) );
25
- $enroll_button_text = apply_filters( 'learn_press_enroll_button_text', __( 'Enroll', 'learnpress' ) );
26
- $retake_button_text = apply_filters( 'learn_press_retake_button_text', __( 'Retake', 'learnpress' ) );
27
- ?>
28
- <div class="learn-press-course-buttons">
29
-
30
- <?php do_action( 'learn_press_before_course_buttons', $course->id ); ?>
31
-
32
- <?php
33
-
34
- # -------------------------------
35
- # Finished Course
36
- # -------------------------------
37
- if ( $user->has( 'finished-course', $course->id ) ): ?>
38
- <?php if ( $count = $user->can( 'retake-course', $course->id ) ): ?>
39
- <button
40
- class="button button-retake-course"
41
- data-course_id="<?php echo esc_attr( $course->id ); ?>"
42
- data-security="<?php echo esc_attr( wp_create_nonce( sprintf( 'learn-press-retake-course-%d-%d', $course->id, $user->id ) ) ); ?>">
43
- <?php echo esc_html( sprintf( __( 'Retake course (+%d)', 'learnpress' ), $count ) ); ?>
44
- </button>
45
- <?php endif; ?>
46
- <?php
47
-
48
- # -------------------------------
49
- # Enrolled Course
50
- # -------------------------------
51
- elseif ( $user->has( 'enrolled-course', $course->id ) ): ?>
52
- <?php
53
- $can_finish = $user->can_finish_course( $course->id );
54
- //if ( $can_finish ) {
55
- $finish_course_security = wp_create_nonce( sprintf( 'learn-press-finish-course-' . $course->id . '-' . $user->id ) );
56
- //} else {
57
- //$finish_course_security = '';
58
- //}
59
- ?>
60
- <button
61
- id="learn-press-finish-course"
62
- class="button-finish-course<?php echo !$can_finish ? ' hide-if-js' : ''; ?>"
63
- data-id="<?php echo esc_attr( $course->id ); ?>"
64
- data-security="<?php echo esc_attr( $finish_course_security ); ?>">
65
- <?php esc_html_e( 'Finish course', 'learnpress' ); ?>
66
- </button>
67
- <?php elseif ( $user->can( 'enroll-course', $course->id ) ) : ?>
68
- <form name="enroll-course" class="enroll-course" method="post" enctype="multipart/form-data">
69
- <?php do_action( 'learn_press_before_enroll_button' ); ?>
70
-
71
- <input type="hidden" name="lp-ajax" value="enroll-course" />
72
- <input type="hidden" name="enroll-course" value="<?php echo $course->id; ?>" />
73
- <button class="button enroll-button" data-block-content="yes"><?php echo $enroll_button_text; ?></button>
74
-
75
- <?php do_action( 'learn_press_after_enroll_button' ); ?>
76
- </form>
77
- <?php elseif ( $user->can( 'purchase-course', $course->id ) ) : ?>
78
- <form name="purchase-course" class="purchase-course" method="post" enctype="multipart/form-data">
79
- <?php do_action( 'learn_press_before_purchase_button' ); ?>
80
- <button class="button purchase-button" data-block-content="yes">
81
- <?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
82
- </button>
83
- <?php do_action( 'learn_press_after_purchase_button' ); ?>
84
- <input type="hidden" name="purchase-course" value="<?php echo $course->id; ?>" />
85
- </form>
86
- <?php else: ?>
87
- <?php $order_status = $user->get_order_status( $course->id ); ?>
88
- <?php if ( in_array( $order_status, array( 'lp-pending', 'lp-refunded', 'lp-cancelled', 'lp-failed' ) ) ) { ?>
89
- <form name="purchase-course" class="purchase-course" method="post" enctype="multipart/form-data">
90
- <?php do_action( 'learn_press_before_purchase_button' ); ?>
91
- <button class="button purchase-button" data-block-content="yes">
92
- <?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
93
- </button>
94
- <?php do_action( 'learn_press_after_purchase_button' ); ?>
95
- <input type="hidden" name="purchase-course" value="<?php echo $course->id; ?>" />
96
- </form>
97
- <?php } elseif ( in_array( $order_status, array( 'lp-processing', 'lp-on-hold' ) ) ) { ?>
98
- <?php learn_press_display_message( '<p>' . apply_filters( 'learn_press_user_course_pending_message', __( 'You have purchased this course. Please wait for approval.', 'learnpress' ), $course, $user ) . '</p>' ); ?>
99
- <?php } elseif ( $order_status && $order_status != 'lp-completed' ) { ?>
100
- <?php learn_press_display_message( '<p>' . apply_filters( 'learn_press_user_can_not_purchase_course_message', __( 'Sorry, you can not purchase this course', 'learnpress' ), $course, $user ) . '</p>' ); ?>
101
- <?php } ?>
102
- <?php endif; ?>
103
-
104
- <?php do_action( 'learn_press_after_course_buttons', $course->id ); ?>
105
-
 
 
 
 
 
106
  </div>
1
+ <?php
2
+ /**
3
+ * Template for displaying the enroll button
4
+ *
5
+ * @author ThimPress
6
+ * @package LearnPress/Templates
7
+ * @version 2.0.6
8
+ */
9
+
10
+ if ( !defined( 'ABSPATH' ) ) {
11
+ exit; // Exit if accessed directly
12
+ }
13
+
14
+ $course = LP()->global['course'];
15
+
16
+ if ( !$course->is_required_enroll() ) {
17
+ return;
18
+ }
19
+
20
+ $course_status = learn_press_get_user_course_status();
21
+ $user = learn_press_get_current_user();
22
+ $in_cart = learn_press_is_added_to_cart( $course->id );
23
+ // only show enroll button if user had not enrolled
24
+ $purchase_button_text = apply_filters( 'learn_press_purchase_button_text', __( 'Buy this course', 'learnpress' ) );
25
+ $enroll_button_text = apply_filters( 'learn_press_enroll_button_text', __( 'Enroll', 'learnpress' ) );
26
+ $retake_button_text = apply_filters( 'learn_press_retake_button_text', __( 'Retake', 'learnpress' ) );
27
+ $notice_enough_student = apply_filters( 'learn_press_course enough students_notice', __( 'The class is full so the enrollment is close. Please contact the site admin.', 'learnpress' ) );
28
+ ?>
29
+ <div class="learn-press-course-buttons">
30
+
31
+ <?php do_action( 'learn_press_before_course_buttons', $course->id ); ?>
32
+
33
+ <?php
34
+
35
+ # -------------------------------
36
+ # Finished Course
37
+ # -------------------------------
38
+ if ( $user->has( 'finished-course', $course->id ) ): ?>
39
+ <?php if ( $count = $user->can( 'retake-course', $course->id ) ): ?>
40
+ <button
41
+ class="button button-retake-course"
42
+ data-course_id="<?php echo esc_attr( $course->id ); ?>"
43
+ data-security="<?php echo esc_attr( wp_create_nonce( sprintf( 'learn-press-retake-course-%d-%d', $course->id, $user->id ) ) ); ?>">
44
+ <?php echo esc_html( sprintf( __( 'Retake course (+%d)', 'learnpress' ), $count ) ); ?>
45
+ </button>
46
+ <?php endif; ?>
47
+ <?php
48
+
49
+ # -------------------------------
50
+ # Enrolled Course
51
+ # -------------------------------
52
+ elseif ( $user->has( 'enrolled-course', $course->id ) ): ?>
53
+ <?php
54
+ $can_finish = $user->can_finish_course( $course->id );
55
+ //if ( $can_finish ) {
56
+ $finish_course_security = wp_create_nonce( sprintf( 'learn-press-finish-course-' . $course->id . '-' . $user->id ) );
57
+ //} else {
58
+ //$finish_course_security = '';
59
+ //}
60
+ ?>
61
+ <button
62
+ id="learn-press-finish-course"
63
+ class="button-finish-course<?php echo !$can_finish ? ' hide-if-js' : ''; ?>"
64
+ data-id="<?php echo esc_attr( $course->id ); ?>"
65
+ data-security="<?php echo esc_attr( $finish_course_security ); ?>">
66
+ <?php esc_html_e( 'Finish course', 'learnpress' ); ?>
67
+ </button>
68
+ <?php elseif ( $user->can( 'enroll-course', $course->id ) === true ) : ?>
69
+ <form name="enroll-course" class="enroll-course" method="post" enctype="multipart/form-data">
70
+ <?php do_action( 'learn_press_before_enroll_button' ); ?>
71
+
72
+ <input type="hidden" name="lp-ajax" value="enroll-course" />
73
+ <input type="hidden" name="enroll-course" value="<?php echo $course->id; ?>" />
74
+ <button class="button enroll-button" data-block-content="yes"><?php echo $enroll_button_text; ?></button>
75
+
76
+ <?php do_action( 'learn_press_after_enroll_button' ); ?>
77
+ </form>
78
+ <?php elseif ( $user->can( 'purchase-course', $course->id ) ) : ?>
79
+ <form name="purchase-course" class="purchase-course" method="post" enctype="multipart/form-data">
80
+ <?php do_action( 'learn_press_before_purchase_button' ); ?>
81
+ <button class="button purchase-button" data-block-content="yes">
82
+ <?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
83
+ </button>
84
+ <?php do_action( 'learn_press_after_purchase_button' ); ?>
85
+ <input type="hidden" name="purchase-course" value="<?php echo $course->id; ?>" />
86
+ </form>
87
+
88
+ <?php elseif ( $user->can( 'enroll-course', $course->id ) === 'enough' ) : ?>
89
+ <p class="learn-press-message"><?php echo $notice_enough_student; ?></p>
90
+
91
+ <?php else: ?>
92
+ <?php $order_status = $user->get_order_status( $course->id ); ?>
93
+ <?php if ( in_array( $order_status, array( 'lp-pending', 'lp-refunded', 'lp-cancelled', 'lp-failed' ) ) ) { ?>
94
+ <form name="purchase-course" class="purchase-course" method="post" enctype="multipart/form-data">
95
+ <?php do_action( 'learn_press_before_purchase_button' ); ?>
96
+ <button class="button purchase-button" data-block-content="yes">
97
+ <?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
98
+ </button>
99
+ <?php do_action( 'learn_press_after_purchase_button' ); ?>
100
+ <input type="hidden" name="purchase-course" value="<?php echo $course->id; ?>" />
101
+ </form>
102
+ <?php } elseif ( in_array( $order_status, array( 'lp-processing', 'lp-on-hold' ) ) ) { ?>
103
+ <?php learn_press_display_message( '<p>' . apply_filters( 'learn_press_user_course_pending_message', __( 'You have purchased this course. Please wait for approval.', 'learnpress' ), $course, $user ) . '</p>' ); ?>
104
+ <?php } elseif ( $order_status && $order_status != 'lp-completed' ) { ?>
105
+ <?php learn_press_display_message( '<p>' . apply_filters( 'learn_press_user_can_not_purchase_course_message', __( 'Sorry, you can not purchase this course', 'learnpress' ), $course, $user ) . '</p>' ); ?>
106
+ <?php } ?>
107
+ <?php endif; ?>
108
+
109
+ <?php do_action( 'learn_press_after_course_buttons', $course->id ); ?>
110
+
111
  </div>