PowerPress Podcasting plugin by Blubrry - Version 9.2

Version Description

  • Released on 08/17/2022
  • Support for Programmatic Ads thru Blubrry
Download this release

Release Info

Developer benbeecroft
Plugin Icon 128x128 PowerPress Podcasting plugin by Blubrry
Version 9.2
Comparing to
See all releases

Code changes from version 9.1.4 to 9.2

css/onboarding.css CHANGED
@@ -743,7 +743,7 @@ input[type="text"], input[type="password"] {
743
  .pp_input-field-login, button[name="signin"] {
744
  width: 40%;
745
  }
746
- p, h5.pp_align-center {
747
  font-size: 16px;
748
  }
749
  p.pp-smaller-text {
743
  .pp_input-field-login, button[name="signin"] {
744
  width: 40%;
745
  }
746
+ p, h5.pp_align-center, a {
747
  font-size: 16px;
748
  }
749
  p.pp-smaller-text {
css/onboarding.min.css CHANGED
@@ -1 +1 @@
1
- body,body *,input,select,textarea{font-family:Roboto,sans-serif;box-sizing:border-box}body ::after,body ::before,body::after,body::before,input::after,input::before,select::after,select::before,textarea::after,textarea::before{box-sizing:border-box}body{background-image:-webkit-linear-gradient(top,#f2f2f2,#e6e6e6)}.pp_container{position:relative;max-width:80rem;margin:2rem auto 1rem auto;background:#fff;width:100%;padding:3rem 5rem;border-radius:4px}.pp_container::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2);-webkit-transform:scale(.98);transform:scale(.98);-webkit-transition:-webkit-transform .28s ease-in-out;transition:-webkit-transform .28s ease-in-out;transition:transform .28s ease-in-out;transition:transform .28s ease-in-out,-webkit-transform .28s ease-in-out;z-index:-1}.pp_container:hover::before{-webkit-transform:scale(1);transform:scale(1)}.pp_button-container{text-align:center}.pp_flex-grid{display:flex}.pp_flex-grid .pp_col{flex:1;margin:0 25px}.pp_flex-grid-thirds{display:flex;justify-content:space-between}.pp_flex-grid-thirds .pp_col{width:32%}@media (max-width:1350px){#pp-create-episode .btn-caption-container{height:80%}}@media (max-width:1100px){#pp-create-episode .btn-caption-container{height:88%}#pp-create-episode .pp_image{height:25%}}@media (max-width:400px){.pp_.flex-grid,.pp_.flex-grid-thirds{display:block}.pp_col{width:100%;margin:0 0 10px 0}}*{box-sizing:border-box}.pp_.flex-grid{margin:0 0 20px 0}.pp_.col{background:salmon;padding:20px}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.5;margin:0 0 .5rem 0;color:#333}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit;text-decoration:none}h2{font-size:1.5rem}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:.9rem}h6{font-size:.7rem}.pp_small{font-size:10px;color:#888}hr{border:0;border-bottom:solid 1px;margin:2rem 0}hr.major{margin:3rem 0}.pp_align-left{text-align:left}.pp_align-center{text-align:center}.pp_align-right{text-align:right}input,select,textarea{color:#555}a{color:#8a4680}b,strong{color:#555}blockquote{border-left-color:rgba(144,144,144,.25)}code{background:rgba(144,144,144,.075);border-color:rgba(144,144,144,.25)}hr{border-bottom-color:rgba(144,144,144,.25)}.pp_leftline{border-left:3px solid #efefef;padding-left:15px}.pp_box{height:100%;margin-bottom:2rem;background:#fff;padding:3rem;border:1px solid rgba(144,144,144,.25)}.pp_box.pp_service-container{border:1px solid #1976d2;padding:0}.pp_box.pp_service-container .pp_content{text-align:center}.pp_box.pp_service-container .pp_button{margin-top:3em}.pp_content{font-weight:700}.pp_button_alt.skip_blubrry{margin-top:3em}p{display:block}.iab_img{width:20%;margin-top:1em}.pp_box.pp_service-container .pp_image{height:5em;background-color:#1976d2;width:calc(100% + 1px)}.pp_box.pp_service-container .pp_image>img{width:auto;height:50%;transform:translateY(50%)}.pp_box.pp_service-container .pp_content{padding:3em}.pp_box header h2{margin-bottom:2rem}.pp_box header p{text-transform:uppercase;font-size:.75rem;font-weight:300;margin:0 0 .25rem 0;padding:0 0 .75rem 0;letter-spacing:.25rem}.pp_box header p:after{content:'';position:absolute;margin:auto;right:0;bottom:0;left:0;width:50%;height:1px;background-color:rgba(0,0,0,.125)}.pp_box>:last-child,.pp_box>:last-child>:last-child,.pp_box>:last-child>:last-child>:last-child{margin-bottom:0}.pp_box.alt{border:0;border-radius:0;padding:0}@media screen and (max-width:736px){.pp_box .pp_content{padding:2rem}}#wpcontent{background-image:-webkit-linear-gradient(top,#f2f2f2,#e6e6e6)}fieldset{margin:0 0 3rem}select{width:100%}.pp_input-field{position:relative;width:25%}.pp_input-field-thirds{position:relative;width:100%}input[type=password],input[type=text]{width:100%;padding-left:.75rem;transition:all .15s ease}.pp_outlined{height:38px;box-shadow:inset 0 0 0 1px #b2b2b2;border-radius:4px;background:0 0}.pp_outlined:focus{outline:0;box-shadow:inset 0 0 0 2px #ffb300}.pp_outlined+label{background:#fff;top:.8rem;position:absolute;left:.75rem;color:grey;transition:all .15s ease;padding:0;font-size:12px;pointer-events:none}.pp_outlined:focus+label,.pp_outlined:valid+label{color:#000;transform:scale(.8) translateY(-24px) translateX(-9px);padding:0 3px}.pp_form-group,.pp_form-radio{position:relative;margin-top:1.25rem;margin-bottom:2.25rem}.pp_form-inline>.pp_btn,.pp_form-inline>.pp_form-group{display:inline-block;margin-bottom:0}.pp_form-help{margin-top:.125rem;margin-left:.125rem;color:#b3b3b3;font-size:.8rem}.pp_checkbox .pp_form-help,.pp_form-group .pp_form-help,.pp_form-radio .pp_form-help{position:absolute;width:100%}.pp_checkbox .pp_form-help{position:relative;margin-bottom:1rem}.pp_form-radio .pp_form-help{padding-top:.25rem;margin-top:-1rem}.pp_checkbox label,.pp_form-radio label{position:relative;cursor:pointer;padding-left:2rem;text-align:left;color:#333;display:block}.pp_checkbox input,.pp_form-radio input{width:auto;opacity:.00000001;position:absolute;left:0}.pp_radio{margin-bottom:1rem}.pp_radio .pp_helper{position:absolute;top:-.25rem;left:-.25rem;cursor:pointer;display:block;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#999}.pp_radio .pp_helper::after,.pp_radio .pp_helper::before{content:'';position:absolute;left:0;top:0;margin:.25rem;width:1rem;height:1rem;-webkit-transition:-webkit-transform .28s ease;transition:-webkit-transform .28s ease;transition:transform .28s ease;transition:transform .28s ease,-webkit-transform .28s ease;border-radius:50%;border:.125rem solid currentColor}.pp_radio .pp_helper::after{-webkit-transform:scale(0);transform:scale(0);background-color:#337ab7;border-color:#337ab7}.pp_radio label:hover .pp_helper{color:#337ab7}.pp_radio input:checked~.pp_helper::after{-webkit-transform:scale(.5);transform:scale(.5)}.pp_radio input:checked~.pp_helper::before{color:#337ab7}.pp_checkbox{margin-bottom:1rem}.pp_checkbox .pp_helper{color:#999;position:absolute;top:0;left:0;width:1rem;height:1rem;z-index:0;border:.125rem solid currentColor;border-radius:.0625rem;-webkit-transition:border-color .28s ease;transition:border-color .28s ease}.pp_checkbox .pp_helper::after,.pp_checkbox .pp_helper::before{position:absolute;height:0;width:.2rem;background-color:#337ab7;display:block;-webkit-transform-origin:left top;transform-origin:left top;border-radius:.25rem;content:'';-webkit-transition:opacity .28s ease,height 0s linear .28s;transition:opacity .28s ease,height 0s linear .28s;opacity:0}.pp_checkbox .pp_helper::before{top:.65rem;left:.38rem;-webkit-transform:rotate(-135deg);transform:rotate(-135deg);box-shadow:0 0 0 .0625rem #fff}.pp_checkbox .helper::after{top:.3rem;left:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.pp_checkbox label:hover .pp_helper{color:#337ab7}.pp_checkbox input:checked~.pp_helper{color:#337ab7}.pp_checkbox input:checked~.pp_helper::after,.pp_checkbox input:checked~.pp_helper::before{opacity:1;-webkit-transition:height .28s ease;transition:height .28s ease}.pp_checkbox input:checked~.pp_helper::after{height:.5rem}.pp_checkbox input:checked~.pp_helper::before{height:1.2rem;-webkit-transition-delay:0.28s;transition-delay:0.28s}.pp_checkbox+.pp_checkbox,.pp_radio+.pp_radio{margin-top:1rem}.pp_has-error .pp_legend.pp_legend,.pp_has-error.pp_form-group .pp_control-label.pp_control-label{color:#d9534f}.pp_has-error.pp_checkbox .pp_form-help,.pp_has-error.pp_checkbox .pp_helper,.pp_has-error.pp_form-group .pp_form-help,.pp_has-error.pp_form-group .pp_helper,.pp_has-error.pp_form-radio .pp_form-help,.pp_has-error.pp_form-radio .pp_helper,.pp_has-error.pp_radio .pp_form-help,.pp_has-error.pp_radio .pp_helper{color:#d9534f}.pp_has-error .pp_bar::before{background:#d9534f;left:0;width:100%}.pp_button{position:relative;background:currentColor;border:1px solid currentColor;font-size:1.1rem;color:#1976d2;margin:0;padding:.75rem 3rem;cursor:pointer;-webkit-transition:background-color .28s ease,color .28s ease,box-shadow .28s ease;transition:background-color .28s ease,color .28s ease,box-shadow .28s ease;overflow:hidden;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.pp_button span{color:#fff;position:relative;z-index:1}.pp_button::before{content:'';position:absolute;background:#003b75;border:50vh solid #1d4567;width:30vh;height:30vh;border-radius:50%;display:block;top:50%;left:50%;z-index:0;opacity:1;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0)}.pp_button:hover{color:#003b75;box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.2)}.pp_button:active::before,.pp_button:focus::before{-webkit-transition:opacity .28s ease 364ms,-webkit-transform 1.12s ease;transition:opacity .28s ease 364ms,-webkit-transform 1.12s ease;transition:transform 1.12s ease,opacity .28s ease 364ms;transition:transform 1.12s ease,opacity .28s ease 364ms,-webkit-transform 1.12s ease;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);opacity:0}.pp_button:focus{outline:0}.pp_button_alt{position:relative;background:#fff;border:1px solid #c4c4c4;font-size:1.1rem;color:#333;margin:0;padding:.75rem 3rem;cursor:pointer;-webkit-transition:background-color .28s ease,color .28s ease,box-shadow .28s ease;transition:background-color .28s ease,color .28s ease,box-shadow .28s ease;overflow:hidden;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.pp_button_alt span{color:#333;position:relative;z-index:1}.pp_button_alt::before{content:'';position:absolute;background:#efefef;width:30vh;height:30vh;border-radius:50%;display:block;top:50%;left:50%;z-index:0;opacity:1;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0)}.pp_button_alt:hover{color:#efefef;box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.2)}.pp_button_alt:active::before,.pp_button_alt:focus::before{-webkit-transition:opacity .28s ease 364ms,-webkit-transform 1.12s ease;transition:opacity .28s ease 364ms,-webkit-transform 1.12s ease;transition:transform 1.12s ease,opacity .28s ease 364ms;transition:transform 1.12s ease,opacity .28s ease 364ms,-webkit-transform 1.12s ease;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);opacity:0}.pp_button_alt:focus{outline:0}.pp_image{height:50%}.pp_image.pp_fit{margin:0 auto;width:100%}#blubrry-logo-onboarding{height:1.5rem;margin:0 0 .5ch 1rem;vertical-align:bottom}.pp_content{height:50%}.pp_image img{width:50%;margin:0 auto}.pp_image.center>img{display:block;margin-left:auto;margin-right:auto}.pp_button.show_button{min-width:240px;margin-top:15px}.pp_input-field-login{position:relative}.pp_file_upload{opacity:0;left:0;top:0;z-index:999;height:50px}.pp_file_upload::-webkit-file-upload-button{height:50px}.image_center{display:block;margin-left:auto;margin-right:auto;width:40%}.image_wrapper{width:100%;height:auto}#upload-artwork-button{float:right;width:auto;min-height:40px;margin:1em 0 0 1em}#filepath{float:left;width:100%;margin:3ch 0 2em 0}#artwork-spec{margin-top:6em}#filePath{width:100%}.pp_input-field-login,button[name=signin]{width:40%}h5.pp_align-center,p{font-size:16px}p.pp-smaller-text{font-size:13px}#podcast-description{height:100px}.wrap div.error{border-right-width:0;border-top-width:0;border-bottom-width:0;border-left-width:3px;color:#dc3232;box-shadow:none;margin-bottom:0}@media (max-width:1095px){#showbasics_artwork{display:block}#artwork-spec{margin-top:0}#upload-artwork-button{width:95%;text-align:center;margin-bottom:1em;margin-left:0;float:left}.pp_input-field-login,button[name=signin]{width:50%}}@media (max-width:736px){.pp_flex-grid{display:block}.pp_container{padding:3rem 1rem}.bpp_input_med{width:100%}#showbasics_artwork_upload{margin:0}.pp_button,.pp_button_alt{padding:.75rem}}@media (max-width:610px){#filePath{width:100%}}@media (max-width:475px){.pp_box{padding:1rem}.pp_input-field-login,button[name=signin]{width:90%}}
1
+ body, input, select, textarea, body * {font-family: 'Roboto', sans-serif;box-sizing: border-box;}body::after, body::before, input::after, input::before, select::after, select::before, textarea::after, textarea::before, body *::after, body *::before {box-sizing: border-box;}body {background-image: -webkit-linear-gradient(top, #f2f2f2, #e6e6e6);}.pp_container {position: relative;max-width: 80rem;margin: 2rem auto 1rem auto;background: #fff;width: 100%;padding: 3rem 5rem;border-radius: 4px;}.pp_container::before {content: '';position: absolute;top: 0;left: 0;right: 0;bottom: 0;box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);-webkit-transform: scale(0.98);transform: scale(0.98);-webkit-transition: -webkit-transform 0.28s ease-in-out;transition: -webkit-transform 0.28s ease-in-out;transition: transform 0.28s ease-in-out;transition: transform 0.28s ease-in-out, -webkit-transform 0.28s ease-in-out;z-index: -1;}.pp_container:hover::before {-webkit-transform: scale(1);transform: scale(1);}.pp_button-container {text-align: center;}.pp_flex-grid {display: flex;}.pp_flex-grid .pp_col {flex: 1;margin: 0 25px;}.pp_flex-grid-thirds {display: flex;justify-content: space-between;}.pp_flex-grid-thirds .pp_col {width: 32%;}@media (max-width: 1350px) {#pp-create-episode .btn-caption-container {height: 80%;}}@media (max-width: 1100px) {#pp-create-episode .btn-caption-container {height: 88%;}#pp-create-episode .pp_image {height: 25%;}}@media (max-width: 400px) {.pp_.flex-grid, .pp_.flex-grid-thirds {display: block;}.pp_col {width: 100%;margin: 0 0 10px 0;}}* {box-sizing: border-box;}.pp_.flex-grid {margin: 0 0 20px 0;}.pp_.col {background: salmon;padding: 20px;}h1, h2, h3, h4, h5, h6 {font-weight: 500;line-height: 1.5;margin: 0 0 .5rem 0;color: #333;}h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {color: inherit;text-decoration: none;}h2 {font-size: 1.5rem;}h3 {font-size: 1.35rem;}h4 {font-size: 1.15rem;}h5 {font-size: 0.9rem;}h6 {font-size: 0.7rem;}.pp_small {font-size: 10px;color: #888888;}hr {border: 0;border-bottom: solid 1px;margin: 2rem 0;}hr.major {margin: 3rem 0;}.pp_align-left {text-align: left;}.pp_align-center {text-align: center;}.pp_align-right {text-align: right;}input, select, textarea {color: #555;}a {color: #8a4680;}strong, b {color: #555;}blockquote {border-left-color: rgba(144, 144, 144, 0.25);}code {background: rgba(144, 144, 144, 0.075);border-color: rgba(144, 144, 144, 0.25);}hr {border-bottom-color: rgba(144, 144, 144, 0.25);}.pp_leftline {border-left: 3px solid #efefef;padding-left: 15px;}.pp_box {height: 100%;margin-bottom: 2rem;background: #FFF;padding: 3rem;border: 1px solid rgba(144, 144, 144, 0.25);}.pp_box.pp_service-container {border: 1px solid #1976d2;padding: 0;}.pp_box.pp_service-container .pp_content {text-align: center;}.pp_box.pp_service-container .pp_button {margin-top: 3em;}.pp_content {font-weight: bold;}.pp_button_alt.skip_blubrry {margin-top: 3em;}p {display: block;}.iab_img {width: 20%;margin-top: 1em;}.pp_box.pp_service-container .pp_image {height: 5em;background-color: #1976d2;width: calc(100% + 1px);}.pp_box.pp_service-container .pp_image>img {width: auto;height: 50%;transform: translateY(50%);}.pp_box.pp_service-container .pp_content {padding: 3em;}.pp_box header h2 {margin-bottom: 2rem;}.pp_box header p {text-transform: uppercase;font-size: .75rem;font-weight: 300;margin: 0 0 .25rem 0;padding: 0 0 .75rem 0;letter-spacing: .25rem;}.pp_box header p:after {content: '';position: absolute;margin: auto;right: 0;bottom: 0;left: 0;width: 50%;height: 1px;background-color: rgba(0, 0, 0, 0.125);}.pp_box > :last-child, .pp_box > :last-child > :last-child, .pp_box > :last-child > :last-child > :last-child {margin-bottom: 0;}.pp_box.alt {border: 0;border-radius: 0;padding: 0;}@media screen and (max-width: 736px) {.pp_box .pp_content {padding: 2rem;}}#wpcontent {background-image: -webkit-linear-gradient(top, #f2f2f2, #e6e6e6);}fieldset {margin: 0 0 3rem;}select {width: 100%;}.pp_input-field {position: relative;width: 25%;}.pp_input-field-thirds {position: relative;width: 100%;}input[type="text"], input[type="password"] {width: 100%;padding-left: 0.75rem;transition: all .15s ease;}.pp_outlined {height: 38px;box-shadow: inset 0 0 0 1px #b2b2b2;border-radius: 4px;background: transparent;}.pp_outlined:focus {outline: none;box-shadow: inset 0 0 0 2px #ffb300;}.pp_outlined + label {background: #ffffff;top: .8rem;position: absolute;left: 0.75rem;color: grey;transition: all .15s ease;padding: 0px;font-size: 12px;pointer-events: none;}.pp_outlined:focus + label, .pp_outlined:valid + label {color: black;transform: scale(.8) translateY(-24px) translateX(-9px);padding: 0 3px;}.pp_form-radio, .pp_form-group {position: relative;margin-top: 1.25rem;margin-bottom: 2.25rem;}.pp_form-inline > .pp_form-group, .pp_form-inline > .pp_btn {display: inline-block;margin-bottom: 0;}.pp_form-help {margin-top: 0.125rem;margin-left: 0.125rem;color: #b3b3b3;font-size: 0.8rem;}.pp_checkbox .pp_form-help, .pp_form-radio .pp_form-help, .pp_form-group .pp_form-help {position: absolute;width: 100%;}.pp_checkbox .pp_form-help {position: relative;margin-bottom: 1rem;}.pp_form-radio .pp_form-help {padding-top: 0.25rem;margin-top: -1rem;}.pp_checkbox label, .pp_form-radio label {position: relative;cursor: pointer;padding-left: 2rem;text-align: left;color: #333;display: block;}.pp_checkbox input, .pp_form-radio input {width: auto;opacity: 0.00000001;position: absolute;left: 0;}.pp_radio {margin-bottom: 1rem;}.pp_radio .pp_helper {position: absolute;top: -0.25rem;left: -0.25rem;cursor: pointer;display: block;font-size: 1rem;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;color: #999;}.pp_radio .pp_helper::before, .pp_radio .pp_helper::after {content: '';position: absolute;left: 0;top: 0;margin: 0.25rem;width: 1rem;height: 1rem;-webkit-transition: -webkit-transform 0.28s ease;transition: -webkit-transform 0.28s ease;transition: transform 0.28s ease;transition: transform 0.28s ease, -webkit-transform 0.28s ease;border-radius: 50%;border: 0.125rem solid currentColor;}.pp_radio .pp_helper::after {-webkit-transform: scale(0);transform: scale(0);background-color: #337ab7;border-color: #337ab7;}.pp_radio label:hover .pp_helper {color: #337ab7;}.pp_radio input:checked ~ .pp_helper::after {-webkit-transform: scale(0.5);transform: scale(0.5);}.pp_radio input:checked ~ .pp_helper::before {color: #337ab7;}.pp_checkbox {margin-bottom: 1rem;}.pp_checkbox .pp_helper {color: #999;position: absolute;top: 0;left: 0;width: 1rem;height: 1rem;z-index: 0;border: 0.125rem solid currentColor;border-radius: 0.0625rem;-webkit-transition: border-color 0.28s ease;transition: border-color 0.28s ease;}.pp_checkbox .pp_helper::before, .pp_checkbox .pp_helper::after {position: absolute;height: 0;width: 0.2rem;background-color: #337ab7;display: block;-webkit-transform-origin: left top;transform-origin: left top;border-radius: 0.25rem;content: '';-webkit-transition: opacity 0.28s ease, height 0s linear 0.28s;transition: opacity 0.28s ease, height 0s linear 0.28s;opacity: 0;}.pp_checkbox .pp_helper::before {top: 0.65rem;left: 0.38rem;-webkit-transform: rotate(-135deg);transform: rotate(-135deg);box-shadow: 0 0 0 0.0625rem #fff;}.pp_checkbox .helper::after {top: 0.3rem;left: 0;-webkit-transform: rotate(-45deg);transform: rotate(-45deg);}.pp_checkbox label:hover .pp_helper {color: #337ab7;}.pp_checkbox input:checked ~ .pp_helper {color: #337ab7;}.pp_checkbox input:checked ~ .pp_helper::after, .pp_checkbox input:checked ~ .pp_helper::before {opacity: 1;-webkit-transition: height 0.28s ease;transition: height 0.28s ease;}.pp_checkbox input:checked ~ .pp_helper::after {height: 0.5rem;}.pp_checkbox input:checked ~ .pp_helper::before {height: 1.2rem;-webkit-transition-delay: 0.28s;transition-delay: 0.28s;}.pp_radio + .pp_radio, .pp_checkbox + .pp_checkbox {margin-top: 1rem;}.pp_has-error .pp_legend.pp_legend, .pp_has-error.pp_form-group .pp_control-label.pp_control-label {color: #d9534f;}.pp_has-error.pp_form-group .pp_form-help, .pp_has-error.pp_form-group .pp_helper, .pp_has-error.pp_checkbox .pp_form-help, .pp_has-error.pp_checkbox .pp_helper, .pp_has-error.pp_radio .pp_form-help, .pp_has-error.pp_radio .pp_helper, .pp_has-error.pp_form-radio .pp_form-help, .pp_has-error.pp_form-radio .pp_helper {color: #d9534f;}.pp_has-error .pp_bar::before {background: #d9534f;left: 0;width: 100%;}.pp_button {position: relative;background: currentColor;border: 1px solid currentColor;font-size: 1.1rem;color: #1976D2;margin: 0;padding: 0.75rem 3rem;cursor: pointer;-webkit-transition: background-color 0.28s ease, color 0.28s ease, box-shadow 0.28s ease;transition: background-color 0.28s ease, color 0.28s ease, box-shadow 0.28s ease;overflow: hidden;box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);}.pp_button span {color: #fff;position: relative;z-index: 1;}.pp_button::before {content: '';position: absolute;background: #003B75;border: 50vh solid #1d4567;width: 30vh;height: 30vh;border-radius: 50%;display: block;top: 50%;left: 50%;z-index: 0;opacity: 1;-webkit-transform: translate(-50%, -50%) scale(0);transform: translate(-50%, -50%) scale(0);}.pp_button:hover {color: #003B75;box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.2);}.pp_button:active::before, .pp_button:focus::before {-webkit-transition: opacity 0.28s ease 0.364s, -webkit-transform 1.12s ease;transition: opacity 0.28s ease 0.364s, -webkit-transform 1.12s ease;transition: transform 1.12s ease, opacity 0.28s ease 0.364s;transition: transform 1.12s ease, opacity 0.28s ease 0.364s, -webkit-transform 1.12s ease;-webkit-transform: translate(-50%, -50%) scale(1);transform: translate(-50%, -50%) scale(1);opacity: 0;}.pp_button:focus {outline: none;}.pp_button_alt {position: relative;background: #ffffff;border: 1px solid #c4c4c4;font-size: 1.1rem;color: #333;margin: 0;padding: 0.75rem 3rem;cursor: pointer;-webkit-transition: background-color 0.28s ease, color 0.28s ease, box-shadow 0.28s ease;transition: background-color 0.28s ease, color 0.28s ease, box-shadow 0.28s ease;overflow: hidden;box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);}.pp_button_alt span {color: #333;position: relative;z-index: 1;}.pp_button_alt::before {content: '';position: absolute;background: #efefef;width: 30vh;height: 30vh;border-radius: 50%;display: block;top: 50%;left: 50%;z-index: 0;opacity: 1;-webkit-transform: translate(-50%, -50%) scale(0);transform: translate(-50%, -50%) scale(0);}.pp_button_alt:hover {color: #efefef;box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.2);}.pp_button_alt:active::before, .pp_button_alt:focus::before {-webkit-transition: opacity 0.28s ease 0.364s, -webkit-transform 1.12s ease;transition: opacity 0.28s ease 0.364s, -webkit-transform 1.12s ease;transition: transform 1.12s ease, opacity 0.28s ease 0.364s;transition: transform 1.12s ease, opacity 0.28s ease 0.364s, -webkit-transform 1.12s ease;-webkit-transform: translate(-50%, -50%) scale(1);transform: translate(-50%, -50%) scale(1);opacity: 0;}.pp_button_alt:focus {outline: none;}.pp_image {height: 50%;}.pp_image.pp_fit {margin: 0 auto;width: 100%;}#blubrry-logo-onboarding {height: 1.5rem;margin: 0 0 0.5ch 1rem;vertical-align: bottom;}.pp_content {height: 50%;}.pp_image img {width: 50%;margin: 0 auto;}.pp_image.center > img {display: block;margin-left: auto;margin-right: auto;}.pp_button.show_button {min-width: 240px;margin-top: 15px;}.pp_input-field-login {position: relative;}.pp_file_upload {opacity: 0;left: 0;top: 0;z-index: 999;height:50px;}.pp_file_upload::-webkit-file-upload-button {height:50px;}.image_center {display: block;margin-left: auto;margin-right: auto;width: 40%;}.image_wrapper {width: 100%;height: auto;}#upload-artwork-button {float: right;width: auto;min-height: 40px;margin: 1em 0 0 1em;}#filepath {float: left;width: 100%;margin: 3ch 0 2em 0;}#artwork-spec {margin-top: 6em;}#filePath {width: 100%;}.pp_input-field-login, button[name="signin"] {width: 40%;}p, h5.pp_align-center, a {font-size: 16px;}p.pp-smaller-text {font-size: 13px;}#podcast-description {height: 100px;}.wrap div.error {border-right-width: 0;border-top-width: 0;border-bottom-width: 0;border-left-width: 3px;color: #dc3232;box-shadow: none;margin-bottom: 0;}@media (max-width: 1095px) {#showbasics_artwork {display: block;}#artwork-spec {margin-top: 0;}#upload-artwork-button {width: 95%;text-align: center;margin-bottom: 1em;margin-left: 0;float: left;}.pp_input-field-login, button[name="signin"] {width: 50%;}}@media (max-width: 736px) {.pp_flex-grid {display: block;}.pp_container {padding: 3rem 1rem;}.bpp_input_med {width: 100%;}#showbasics_artwork_upload {margin: 0;}.pp_button_alt, .pp_button {padding: 0.75rem;}}@media (max-width: 610px) {#filePath {width: 100%;}}@media (max-width: 475px) {.pp_box {padding: 1rem;}.pp_input-field-login, button[name="signin"] {width: 90%;}}
feed-podcast.php CHANGED
@@ -125,7 +125,7 @@ echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'."\n";
125
  <language><?php bloginfo_rss( 'language' ); ?></language>
126
  <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
127
  <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
128
- <?php if( !empty($FeedActionHook) ) { echo '<generator>https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>'. PHP_EOL; } ?>
129
  <?php do_action('rss2_head'.$FeedActionHook); ?>
130
  <?php
131
 
125
  <language><?php bloginfo_rss( 'language' ); ?></language>
126
  <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
127
  <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
128
+ <?php if( !empty($FeedActionHook) ) { echo '<generator>Blubrry PowerPress/' . POWERPRESS_VERSION . '</generator>'. PHP_EOL; } ?>
129
  <?php do_action('rss2_head'.$FeedActionHook); ?>
130
  <?php
131
 
js/admin.js CHANGED
@@ -100,6 +100,9 @@ function powerpress_openTab(evt, cityName) {
100
  case "other":
101
  document.getElementById("other-default-open").click();
102
  break;
 
 
 
103
  default:
104
  break;
105
  }
100
  case "other":
101
  document.getElementById("other-default-open").click();
102
  break;
103
+ case "make-money":
104
+ document.getElementById("make-money-default-open").click();
105
+ break;
106
  default:
107
  break;
108
  }
powerpress.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Blubrry PowerPress
4
  Plugin URI: http://create.blubrry.com/resources/powerpress/
5
  Description: <a href="https://create.blubrry.com/resources/powerpress/" target="_blank">Blubrry PowerPress</a> is the No. 1 Podcasting plugin for WordPress. Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast tools, podcast SEO features, and more! Fully supports Apple Podcasts (previously iTunes), Google Podcasts, Spotify, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
6
- Version: 9.1.4
7
  Author: Blubrry
8
  Author URI: https://blubrry.com/
9
  Requires at least: 3.6
@@ -35,7 +35,7 @@ if( !function_exists('add_action') ) {
35
  }
36
 
37
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
38
- define('POWERPRESS_VERSION', '9.1.4' );
39
 
40
  // Translation support:
41
  if ( !defined('POWERPRESS_ABSPATH') )
@@ -568,29 +568,11 @@ function powerpress_rss2_head()
568
 
569
  $General = get_option('powerpress_general');
570
 
571
- // We made it this far, lets write stuff to the feed!
572
- echo '<!-- podcast_generator="Blubrry PowerPress/'. POWERPRESS_VERSION .'" ';
573
- if( isset($General['advanced_mode_2']) && empty($General['advanced_mode_2']) )
574
- echo 'mode="simple" ';
575
- else
576
- echo 'mode="advanced" ';
577
- // Additional info for diagnostics
578
- if( !empty($powerpress_feed['category']) )
579
- echo 'category="'.$powerpress_feed['category'].'" ';
580
- if( !empty($powerpress_feed['term_taxonomy_id']) )
581
- echo 'ttid="'.$powerpress_feed['term_taxonomy_id'].'" ';
582
- if( !empty($powerpress_feed['post_type']) )
583
- echo 'posttype="'.$powerpress_feed['post_type'].'" ';
584
- if( !empty($powerpress_feed['feed-slug']) )
585
- echo 'feedslug="'.$powerpress_feed['feed-slug'].'" ';
586
-
587
  $feedComment = apply_filters('powerpress_feed_comment', '');
588
- $feedComment = str_replace( array('<!--', '-->'), array('|!~~', '~~>'), $feedComment);
589
  $feedComment = trim($feedComment);
590
  if( !empty($feedComment) )
591
  echo $feedComment.' ';
592
 
593
- echo 'Blubrry PowerPress Podcasting plugin for WordPress (https://www.blubrry.com/powerpress/) -->'.PHP_EOL;
594
 
595
  // Websub!
596
  if(!(defined('POWERPRESS_DISABLE_WEBSUB') && POWERPRESS_DISABLE_WEBSUB )) {
3
  Plugin Name: Blubrry PowerPress
4
  Plugin URI: http://create.blubrry.com/resources/powerpress/
5
  Description: <a href="https://create.blubrry.com/resources/powerpress/" target="_blank">Blubrry PowerPress</a> is the No. 1 Podcasting plugin for WordPress. Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast tools, podcast SEO features, and more! Fully supports Apple Podcasts (previously iTunes), Google Podcasts, Spotify, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.
6
+ Version: 9.2
7
  Author: Blubrry
8
  Author URI: https://blubrry.com/
9
  Requires at least: 3.6
35
  }
36
 
37
  // WP_PLUGIN_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)
38
+ define('POWERPRESS_VERSION', '9.2' );
39
 
40
  // Translation support:
41
  if ( !defined('POWERPRESS_ABSPATH') )
568
 
569
  $General = get_option('powerpress_general');
570
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
571
  $feedComment = apply_filters('powerpress_feed_comment', '');
 
572
  $feedComment = trim($feedComment);
573
  if( !empty($feedComment) )
574
  echo $feedComment.' ';
575
 
 
576
 
577
  // Websub!
578
  if(!(defined('POWERPRESS_DISABLE_WEBSUB') && POWERPRESS_DISABLE_WEBSUB )) {
powerpressadmin-basic.php CHANGED
@@ -158,6 +158,7 @@ jQuery(document).ready(function($) {
158
  <button id="destinations-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-destinations')"><?php echo htmlspecialchars(__('Destinations', 'powerpress')); ?></button>
159
  <!-- <button id="analytics-tab" class="tablinks" onclick="openTab(event, 'settings-analytics')"><?php echo htmlspecialchars(__('Analytics', 'powerpress')); ?></button> -->
160
  <button id="advanced-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-advanced')"><?php echo htmlspecialchars(__('Advanced', 'powerpress')); ?></button>
 
161
  </div>
162
 
163
  <div id="settings-welcome" class="pp-tabcontent active">
@@ -360,6 +361,42 @@ jQuery(document).ready(function($) {
360
  ?>
361
  </div>
362
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
  </div>
364
  <div class="clear"></div>
365
 
@@ -782,7 +819,7 @@ function powerpressadmin_edit_media_statistics($General)
782
  <?php echo __('Stats Prefix 2', 'powerpress'); ?>
783
  </th>
784
  <td>
785
- <input type="text" class="pp-settings-text-input" name="<?php if( stripos($General['redirect2'], $StatsIntegrationURL) !== false ) echo 'NULL[redirect2]'; else echo 'General[redirect2]'; ?>" value="<?php echo esc_attr($General['redirect2']); ?>" onblur="return CheckRedirect(this);" maxlength="255" <?php if( stripos($General['redirect2'], $StatsIntegrationURL) !== false ) { echo ' readOnly="readOnly"'; $StatsIntegrationURL = false; } ?> />
786
  </td>
787
  </tr>
788
  </table>
158
  <button id="destinations-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-destinations')"><?php echo htmlspecialchars(__('Destinations', 'powerpress')); ?></button>
159
  <!-- <button id="analytics-tab" class="tablinks" onclick="openTab(event, 'settings-analytics')"><?php echo htmlspecialchars(__('Analytics', 'powerpress')); ?></button> -->
160
  <button id="advanced-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-advanced')"><?php echo htmlspecialchars(__('Advanced', 'powerpress')); ?></button>
161
+ <button id="make-money-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-make-money')"><?php echo htmlspecialchars(__('Make Money', 'powerpress')); ?></button>
162
  </div>
163
 
164
  <div id="settings-welcome" class="pp-tabcontent active">
361
  ?>
362
  </div>
363
 
364
+ <div id="settings-make-money" class="pp-tabcontent">
365
+ <div class="pp-sidenav-toggle-container">
366
+ <div id="advanced-toggle-sidenav" class="toggle-sidenav" title="Blubrry Services" onclick="powerpress_displaySideNav(this);">&lt;</div>
367
+ <div class="pp-sidenav">
368
+ <?php
369
+ powerpressadmin_edit_blubrry_services($General);
370
+ ?>
371
+ <div class="pp-sidenav-extra" style="margin-top: 10%;"><a href="https://www.blubrry.com/support/" class="pp-sidenav-extra-text"><?php echo htmlspecialchars(__('POWERPRESS DOCUMENTATION', 'powerpress')); ?></a></div>
372
+ <div class="pp-sidenav-extra"><a href="https://www.blubrry.com/podcast-insider/" class="pp-sidenav-extra-text"><?php echo htmlspecialchars(__('PODCAST INSIDER BLOG', 'powerpress')); ?></a></div>
373
+ </div>
374
+ </div>
375
+ <?php
376
+ $origin_array = explode('.', POWERPRESS_BLUBRRY_API_URL);
377
+ $origin_array[0] = str_replace('api', 'publish', $origin_array[0]);
378
+ $publisher_origin = implode('.', $origin_array);
379
+ $publisher_origin = rtrim($publisher_origin, '/'); ?>
380
+ <button style="display: none;" id="make-money-default-open" class="pp-sidenav-tablinks active" onclick="sideNav(event, 'make-money-all')"><img class="pp-nav-icon" style="width: 22px;" alt="" src="<?php echo powerpress_get_root_url(); ?>images/settings_nav_icons/rss-symbol.svg"><?php echo htmlspecialchars(__('Hidden button', 'powerpress')); ?></button>
381
+
382
+ <div id="make-money-all" class="pp-sidenav-tab active">
383
+ <div class="pp_container">
384
+ <h1 class="pp-heading"><?php echo __('Programmatic Advertising', 'powerpress'); ?></h1>
385
+ <br />
386
+ <p class="pp-sub"><?php echo __('Blubrry hosting customers have access to our Programmatic Advertising service, which automatically puts ads into your show and pays YOU out directly from Blubrry! Simply configure your shows in the Blubrry Publisher then use the link there to sync you WordPress site.', 'powerpress'); ?></p>
387
+ <br />
388
+ <p class="pp-main"><a class="pp-main" target="_blank"
389
+ href="https://blubrry.com/services/programmatic-advertising/"
390
+ class="pp_align-center"><?php echo __('Learn More', 'powerpress'); ?></a></p>
391
+ <br />
392
+ <p class="pp-main"><a class="pp-main"
393
+ href="<?php echo $publisher_origin; ?>/partners/programmatic-advertising-management/"
394
+ class="pp_align-center"><?php echo __('Configure Shows for Programmatic Ads', 'powerpress'); ?></a></p>
395
+
396
+ </div>
397
+ </div>
398
+ </div>
399
+
400
  </div>
401
  <div class="clear"></div>
402
 
819
  <?php echo __('Stats Prefix 2', 'powerpress'); ?>
820
  </th>
821
  <td>
822
+ <input type="text" class="pp-settings-text-input" name="<?php if( @strpos($General['redirect2'], $StatsIntegrationURL) !== false ) echo 'NULL[redirect2]'; else echo 'General[redirect2]'; ?>" value="<?php echo esc_attr($General['redirect2']); ?>" onblur="return CheckRedirect(this);" maxlength="255" <?php if( stripos($General['redirect2'], $StatsIntegrationURL) !== false ) { echo ' readOnly="readOnly"'; $StatsIntegrationURL = false; } ?> />
823
  </td>
824
  </tr>
825
  </table>
powerpressadmin-editfeed.php CHANGED
@@ -292,6 +292,8 @@ function powerpress_admin_editfeed($type='', $type_value = '', $feed_slug = fals
292
  <button id="destinations-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-destinations')"><?php echo htmlspecialchars(__('Destinations', 'powerpress')); ?></button>
293
  <!-- <button class="tablinks" onclick="openTab(event, 'settings-analytics')"><?php echo htmlspecialchars(__('Analytics', 'powerpress')); ?></button> -->
294
  <button id="other-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-other')"><?php echo htmlspecialchars(__('Other', 'powerpress')); ?></button>
 
 
295
  </div>
296
 
297
  <div id="settings-welcome" class="pp-tabcontent active">
@@ -447,7 +449,37 @@ function powerpress_admin_editfeed($type='', $type_value = '', $feed_slug = fals
447
  ?>
448
  </div>
449
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
450
 
 
 
 
451
  </div>
452
  <div class="clear"></div>
453
 
292
  <button id="destinations-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-destinations')"><?php echo htmlspecialchars(__('Destinations', 'powerpress')); ?></button>
293
  <!-- <button class="tablinks" onclick="openTab(event, 'settings-analytics')"><?php echo htmlspecialchars(__('Analytics', 'powerpress')); ?></button> -->
294
  <button id="other-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-other')"><?php echo htmlspecialchars(__('Other', 'powerpress')); ?></button>
295
+ <button id="make-money-tab" class="tablinks" onclick="powerpress_openTab(event, 'settings-make-money')"><?php echo htmlspecialchars(__('Make Money', 'powerpress')); ?></button>
296
+
297
  </div>
298
 
299
  <div id="settings-welcome" class="pp-tabcontent active">
449
  ?>
450
  </div>
451
  </div>
452
+ <div id="settings-make-money" class="pp-tabcontent">
453
+ <div class="pp-sidenav-toggle-container">
454
+ <div id="advanced-toggle-sidenav" class="toggle-sidenav" title="Blubrry Services" onclick="powerpress_displaySideNav(this);">&lt;</div>
455
+ <div class="pp-sidenav">
456
+ <?php
457
+ powerpressadmin_edit_blubrry_services($General);
458
+ ?>
459
+ <div class="pp-sidenav-extra" style="margin-top: 10%;"><a href="https://www.blubrry.com/support/" class="pp-sidenav-extra-text"><?php echo htmlspecialchars(__('POWERPRESS DOCUMENTATION', 'powerpress')); ?></a></div>
460
+ <div class="pp-sidenav-extra"><a href="https://www.blubrry.com/podcast-insider/" class="pp-sidenav-extra-text"><?php echo htmlspecialchars(__('PODCAST INSIDER BLOG', 'powerpress')); ?></a></div>
461
+ </div>
462
+ </div>
463
+ <?php
464
+ $origin_array = explode('.', POWERPRESS_BLUBRRY_API_URL);
465
+ $origin_array[0] = str_replace('api', 'publish', $origin_array[0]);
466
+ $publisher_origin = implode('.', $origin_array);
467
+ $publisher_origin = rtrim($publisher_origin, '/'); ?>
468
+ <button style="display: none;" id="make-money-default-open" class="pp-sidenav-tablinks active" onclick="sideNav(event, 'make-money-all')"><img class="pp-nav-icon" style="width: 22px;" alt="" src="<?php echo powerpress_get_root_url(); ?>images/settings_nav_icons/rss-symbol.svg"><?php echo htmlspecialchars(__('Hidden button', 'powerpress')); ?></button>
469
+
470
+ <div id="make-money-all" class="pp-sidenav-tab active">
471
+ <div class="pp_container">
472
+ <h1 class="pp-heading"><?php echo __('Programmatic Advertising', 'powerpress'); ?></h1>
473
+ <br />
474
+ <p class="pp-sub"><!-- TODO: Update copy? --><?php echo __('As a Blubrry hosting customer, you have access to our Programmatic Advertising service, which automatically puts ads into your show and pays YOU out directly from Blubrry! Simply configure your shows in the Blubrry Publisher then use the link there to sync you WordPress site.', 'powerpress'); ?></p>
475
+ <br />
476
+ <p class="pp-main"><a class="pp-main"
477
+ href="<?php echo $publisher_origin; ?>/partners/programmatic-advertising-management/"
478
+ class="pp_align-center"><?php echo __('Configure Shows for Programmatic Ads', 'powerpress'); ?></a></p>
479
 
480
+ </div>
481
+ </div>
482
+ </div>
483
  </div>
484
  <div class="clear"></div>
485
 
powerpressadmin.php CHANGED
@@ -953,6 +953,241 @@ function powerpress_admin_init()
953
  {
954
  switch( $_GET['action'] )
955
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
956
  case 'powerpress-enable-categorypodcasting': {
957
  check_admin_referer('powerpress-enable-categorypodcasting');
958
 
@@ -2508,6 +2743,10 @@ function powerpress_check_url(url, DestDiv)
2508
  if (url.includes('mc.blubrry.com')) {
2509
  validChars = ':0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-_.?=&%:';
2510
  }
 
 
 
 
2511
  let FeedSlug = DestDiv.replace("powerpress_warning_", "");
2512
 
2513
  for( var x = 0; x < url.length; x++ )
@@ -2607,8 +2846,7 @@ function powerpress_get_media_info(FeedSlug)
2607
  }
2608
 
2609
  if (Parts[4]) {
2610
-
2611
- self.parent.document.getElementById('powerpress_url_' + FeedSlug).value= Parts[4];
2612
  }
2613
 
2614
 
@@ -2910,8 +3148,16 @@ function powerpress_media_info_ajax()
2910
  {
2911
  $media_url = rtrim($GeneralSettings['default_url'], '/') .'/'. $media_url;
2912
  }
2913
-
2914
- $ContentType = false;
 
 
 
 
 
 
 
 
2915
  $UrlParts = parse_url($media_url);
2916
  if( !empty($UrlParts['path']) )
2917
  {
@@ -3738,7 +3984,8 @@ function powerpress_process_hosting($post_ID, $post_title)
3738
  if( $feed_slug != 'podcast' )
3739
  $field = '_'.$feed_slug.':enclosure';
3740
  $EnclosureData = get_post_meta($post_ID, $field, true);
3741
-
 
3742
  if( $EnclosureData )
3743
  {
3744
  /*
@@ -3781,9 +4028,11 @@ function powerpress_process_hosting($post_ID, $post_title)
3781
  {
3782
  $results = powerpress_write_tags($EnclosureURL, $post_title, $program_keyword);
3783
  // if error, try inputting just the file name in case it's unpublished
3784
- if ( ( strpos($EnclosureURL, 'ins.blubrry.com') || strpos($EnclosureURL, 'content.blubrry.com') || strpos($EnclosureURL, 'protected.blubrry.com')) && (isset($results['error']) || !is_array($results) || !$results) ) {
3785
  $EnclosureUrLArray = explode('/', $EnclosureURL);
3786
  $EnclosureURL = end($EnclosureUrLArray);
 
 
3787
  $results = powerpress_write_tags($EnclosureURL, $post_title, $program_keyword);
3788
  }
3789
  }
@@ -3794,6 +4043,8 @@ function powerpress_process_hosting($post_ID, $post_title)
3794
  $EnclosureFullURL = $EnclosureURL;
3795
  $EnclosureUrLArray = explode('/', $EnclosureURL);
3796
  $EnclosureURL = end($EnclosureUrLArray);
 
 
3797
  $results = powerpress_get_media_info($EnclosureURL, $program_keyword);
3798
 
3799
  // if error, try the full URL
@@ -3828,7 +4079,8 @@ function powerpress_process_hosting($post_ID, $post_title)
3828
 
3829
  if( $error == false )
3830
  {
3831
- // Extend the max execution time here
 
3832
  set_time_limit(60*20); // give it 20 minutes just in case
3833
  $json_data = false;
3834
  $api_url_array = powerpress_get_api_array();
@@ -3837,15 +4089,15 @@ function powerpress_process_hosting($post_ID, $post_title)
3837
  $req_url = sprintf('/2/media/%s/%s?format=json&publish=true&cache=' . md5( rand(0, 999) . time() ), urlencode($program_keyword), urlencode($EnclosureURL));
3838
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'?'. POWERPRESS_BLUBRRY_API_QSA:'');
3839
  $req_url .= (defined('POWERPRESS_PUBLISH_PROTECTED') ? '&protected=true' : '');
3840
- $results = $auth->api($accessToken, $req_url, false, false, 60 * 30);
3841
  } else {
3842
  foreach ($api_url_array as $index => $api_url) {
3843
  $req_url = sprintf('%s/media/%s/%s?format=json&publish=true&cache=' . md5( rand(0, 999) . time() ), rtrim($api_url, '/'), urlencode($program_keyword), urlencode($EnclosureURL));
3844
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA') ? '&' . POWERPRESS_BLUBRRY_API_QSA : '');
3845
  $req_url .= (defined('POWERPRESS_PUBLISH_PROTECTED') ? '&protected=true' : '');
3846
- $json_data = powerpress_remote_fopen($req_url, $Settings['blubrry_auth'], array(), 60 * 30); // give this up to 30 minutes, though 3 seocnds to 20 seconds is all one should need.
3847
  if (!$json_data && $api_url == 'https://api.blubrry.com/') { // Lets force cURL and see if that helps...
3848
- $json_data = powerpress_remote_fopen($req_url, $Settings['blubrry_auth'], array(), 60 * 30, false, true);
3849
  }
3850
  if ($json_data != false)
3851
  break;
@@ -3881,7 +4133,7 @@ function powerpress_process_hosting($post_ID, $post_title)
3881
  else if( !empty($GLOBALS['g_powerpress_remote_error']) )
3882
  $error .= htmlspecialchars($GLOBALS['g_powerpress_remote_error']);
3883
  else
3884
- $error .= __('Unknown error ocurred.', 'powerpress');
3885
  $error .= '</div>';
3886
  powerpress_add_error($error);
3887
  }
@@ -4358,9 +4610,24 @@ function powerpress_get_media_info($file, $program_Keyword = false)
4358
  if( empty($program_Keyword) && !empty($Settings['blubrry_program_keyword']) ) {
4359
  $program_Keyword = $Settings['blubrry_program_keyword'];
4360
  }
 
 
 
 
 
 
 
 
4361
  $content = false;
4362
  $Results = array();
 
4363
  $api_url_array = powerpress_get_api_array();
 
 
 
 
 
 
4364
  if ($creds) {
4365
  $accessToken = powerpress_getAccessToken();
4366
  $req_url = sprintf('/2/media/%s/%s?format=json&info=true', urlencode($program_Keyword), urlencode($file));
@@ -4387,39 +4654,40 @@ function powerpress_get_media_info($file, $program_Keyword = false)
4387
  if ($Results && is_array($Results))
4388
  return $Results;
4389
 
4390
- // if no results, try verifying the unpublished version of the file
4391
- $file_array = explode('/', $file);
4392
- $file = $file_array[count($file_array) - 1];
4393
- $content = false;
4394
- $Results = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4395
 
4396
- if ($creds) {
4397
- $accessToken = powerpress_getAccessToken();
4398
- $req_url = sprintf('/2/media/%s/%s?format=json&info=true', urlencode($program_Keyword), urlencode($file));
4399
- $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'?'. POWERPRESS_BLUBRRY_API_QSA:'');
4400
- $Results = $auth->api($accessToken, $req_url, false);
4401
- } else {
4402
- foreach ($api_url_array as $index => $api_url) {
4403
- $req_url = sprintf('%s/media/%s/%s?format=json&info=true', rtrim($api_url, '/'), urlencode($program_Keyword), urlencode($file));
4404
- $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA') ? '&' . POWERPRESS_BLUBRRY_API_QSA : '');
4405
- $content = powerpress_remote_fopen($req_url, $Settings['blubrry_auth']);
4406
- if (!$content && $api_url == 'https://api.blubrry.com/') { // Lets force cURL and see if that helps...
4407
- $content = powerpress_remote_fopen($req_url, $Settings['blubrry_auth'], array(), 15, false, true);
4408
  }
4409
 
4410
- if ($content != false)
4411
- break;
4412
- }
4413
-
4414
- if ($content) {
4415
- $Results = powerpress_json_decode($content);
4416
  }
4417
  }
4418
 
4419
- if (isset($Results['error'])) {
4420
- return array('error'=>__('Unpublished file not found.', 'powerpress') );
4421
- }
4422
-
4423
  if ($Results && is_array($Results))
4424
  return $Results;
4425
 
953
  {
954
  switch( $_GET['action'] )
955
  {
956
+ case 'powerpress-sync-progad': {
957
+ function buildRedirect($Redirects) {
958
+ $redirect_result = '';
959
+ for( $x = 3; $x >= 0; $x-- )
960
+ {
961
+ $key = sprintf('redirect%d', $x);
962
+ if( !empty($Redirects[ $key ]) )
963
+ {
964
+ if( preg_match('/^https?:\/\/(.*)$/', trim($Redirects[ $key ]) , $matches ) == 0 )
965
+ continue;
966
+
967
+ $RedirectClean = $matches[1];
968
+ if( substr($RedirectClean, -1, 1) != '/' ) // Rediercts need to end with a slash /.
969
+ $RedirectClean .= '/';
970
+
971
+ if( !empty($RedirectClean) )
972
+ {
973
+ if( strpos($RedirectClean, '/') == 0 ) // Not a valid redirect URL
974
+ continue;
975
+
976
+ if( !strstr($redirect_result, $RedirectClean) ) // If the redirect is not already added...
977
+ $redirect_result = $RedirectClean . $redirect_result;
978
+ }
979
+ }
980
+ }
981
+ return 'https://' . $redirect_result;
982
+ }
983
+ // grab the redirect url prefixes for each feed slug and make an array
984
+ $General = powerpress_get_settings('powerpress_general');
985
+ // append general redirects to each other (starting with redirect1)
986
+ $Redirects = array('redirect0'=>'', 'redirect1'=>'', 'redirect2'=>'', 'redirect3'=>'');
987
+ if( !empty($General['redirect1']) )
988
+ $Redirects['redirect1'] = $General['redirect1'];
989
+ if( !empty($General['redirect2']) )
990
+ $Redirects['redirect2'] = $General['redirect2'];
991
+ if( !empty($General['redirect3']) )
992
+ $Redirects['redirect3'] = $General['redirect3'];
993
+
994
+ // add to redirect array with key 'enclosure'
995
+ $main_redirect = buildRedirect($Redirects);
996
+ $redirect_array = array('enclosure' => $main_redirect);
997
+
998
+ // then append custom feed redirects to beginning of main feed redirect with _slug:enclosure for each custom feed
999
+ // channels
1000
+ if (!empty($General['custom_feeds'])) {
1001
+ foreach ($General['custom_feeds'] as $slug => $title) {
1002
+ $Feed = get_option('powerpress_feed_' . $slug);
1003
+ if (!empty($Feed['redirect'])) {
1004
+ $Redirects['redirect0'] = $Feed['redirect'];
1005
+ $redirect_array += array('_' . $slug . ':enclosure' => buildRedirect($Redirects));
1006
+ $Redirects['redirect0'] = '';
1007
+ } else {
1008
+ $redirect_array += array('_' . $slug . ':enclosure' => $main_redirect);
1009
+ // default stats redirect
1010
+ }
1011
+ }
1012
+ }
1013
+
1014
+ // categories
1015
+ if (!empty($General['custom_cat_feeds'])) {
1016
+ foreach ($General['custom_cat_feeds'] as $idx => $id) {
1017
+ $category = get_category($id);
1018
+ // $category['slug']
1019
+ $Feed = get_option('powerpress_cat_feed_' . $id);
1020
+ if (!empty($Feed['redirect'])) {
1021
+ $Redirects['redirect0'] = $Feed['redirect'];
1022
+ $redirect_array += array('_' . $category->slug . ':enclosure' => buildRedirect($Redirects));
1023
+ $Redirects['redirect0'] = '';
1024
+ } else {
1025
+ $redirect_array += array('_' . $category->slug . ':enclosure' => $main_redirect);
1026
+ // default stats redirect
1027
+ }
1028
+ }
1029
+ }
1030
+
1031
+ // taxonomies
1032
+ $PowerPressTaxonomies = get_option('powerpress_taxonomy_podcasting');
1033
+ if (!empty($PowerPressTaxonomies)) {
1034
+ foreach ($PowerPressTaxonomies as $tt_id => $null) {
1035
+
1036
+ $taxonomy_type = '';
1037
+ $term_ID = '';
1038
+
1039
+ global $wpdb;
1040
+ $term_info = $wpdb->get_results("SELECT term_id, taxonomy FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = $tt_id", ARRAY_A);
1041
+ if (!empty($term_info[0]['term_id'])) {
1042
+ $term_ID = $term_info[0]['term_id'];
1043
+ $taxonomy_type = $term_info[0]['taxonomy'];
1044
+ } else {
1045
+ continue; // we didn't find this taxonomy relationship
1046
+ }
1047
+
1048
+ $Feed = powerpress_get_settings('powerpress_taxonomy_' . $tt_id);
1049
+ $term_object = get_term( $term_ID, $taxonomy_type, OBJECT, 'edit');
1050
+ if (!empty($Feed['redirect'])) {
1051
+ $Redirects['redirect0'] = $Feed['redirect'];
1052
+ $redirect_array += array('_' . $term_object->slug . ':enclosure' => buildRedirect($Redirects));
1053
+ $Redirects['redirect0'] = '';
1054
+ } else {
1055
+ $redirect_array += array('_' . $term_object->slug . ':enclosure' => $main_redirect);
1056
+ // default stats redirect
1057
+ }
1058
+ }
1059
+ }
1060
+
1061
+ // post types
1062
+ $post_types = powerpress_admin_get_post_types(false);
1063
+ if (!empty($post_types)) {
1064
+ foreach ($post_types as $null => $post_type) {
1065
+ $PostTypeSettingsArray = get_option('powerpress_posttype_' . $post_type);
1066
+ if (!$PostTypeSettingsArray)
1067
+ continue;
1068
+
1069
+ foreach ($PostTypeSettingsArray as $feed_slug => $Feed) {
1070
+ if (!empty($Feed['redirect'])) {
1071
+ $Redirects['redirect0'] = $Feed['redirect'];
1072
+ $redirect_array += array('_' . $feed_slug . ':enclosure' => buildRedirect($Redirects));
1073
+ $Redirects['redirect0'] = '';
1074
+ } else {
1075
+ $redirect_array += array('_' . $feed_slug . ':enclosure' => $main_redirect);
1076
+ // default stats redirect
1077
+ }
1078
+ }
1079
+ }
1080
+ }
1081
+
1082
+ // figure out which shows we are enabling/disabling
1083
+ $progad_error = '';
1084
+ $progad_enable_urls = array();
1085
+ $progad_disable_urls = array();
1086
+ $auth = new PowerPressAuth();
1087
+ $accessToken = powerpress_getAccessToken();
1088
+ $req_url = sprintf('/2/media/prog_ad_status.json?cache=' . md5(rand(0, 999) . time()));
1089
+ $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA') ? '?' . POWERPRESS_BLUBRRY_API_QSA : '');
1090
+ $req_url .= (defined('POWERPRESS_PUBLISH_PROTECTED') ? '&protected=true' : '');
1091
+ $progad_enabled_shows = $auth->api($accessToken, $req_url, array(), false, 60 * 30);
1092
+ if (!$progad_enabled_shows) {
1093
+ $progad_error = $auth->getLastError();
1094
+ }
1095
+ $past_shows_with_progad = get_option('pp_programmatic_enabled_shows');
1096
+ if (!empty($past_shows_with_progad) && !empty($progad_enabled_shows['programs'])) {
1097
+ $shows_to_enable = array_diff($progad_enabled_shows['programs'], $past_shows_with_progad);
1098
+ $shows_to_disable = array_diff($past_shows_with_progad, $progad_enabled_shows['programs']);
1099
+ } elseif (!empty($past_shows_with_progad) && empty($progad_enabled_shows['programs'])) {
1100
+ $shows_to_disable = $past_shows_with_progad;
1101
+ } elseif (!empty($progad_enabled_shows['programs']) && empty($past_shows_with_progad)) {
1102
+ $shows_to_enable = $progad_enabled_shows['programs'];
1103
+ }
1104
+ update_option('pp_programmatic_enabled_shows', $progad_enabled_shows['programs']);
1105
+
1106
+ // use the API to get associated URLs for all URLs in any program whose ads were just enabled
1107
+ if (!empty($shows_to_enable)) {
1108
+ foreach ($shows_to_enable as $idx => $keyword) {
1109
+ $req_url = sprintf('/2/media/' . $keyword . '/prog_ad_urls.json?cache=' . md5(rand(0, 999) . time()));
1110
+ $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA') ? '?' . POWERPRESS_BLUBRRY_API_QSA : '');
1111
+ $req_url .= (defined('POWERPRESS_PUBLISH_PROTECTED') ? '&protected=true' : '');
1112
+ $result_prog = $auth->api($accessToken, $req_url, array(), false, 60 * 30);
1113
+ if (isset($result_prog['urls']) && is_array($result_prog['urls'])) {
1114
+ foreach ($result_prog['urls'] as $i => $url_pair) {
1115
+ // add the redirect to the key before adding this pair
1116
+ $progad_enable_urls += $url_pair;
1117
+ }
1118
+ } elseif (isset($result_prog['message']) && $result_prog['message'] == 'no media') {
1119
+ // no error--continue
1120
+ }
1121
+ else {
1122
+ $progad_error = $auth->getLastError();
1123
+ }
1124
+ }
1125
+ }
1126
+
1127
+ // use the API to get associated URLs for all URLs in any program whose ads were just disabled
1128
+ if (!empty($shows_to_disable)) {
1129
+ foreach ($shows_to_disable as $idx => $keyword) {
1130
+ $req_url = sprintf('/2/media/' . $keyword . '/prog_ad_urls.json?disable=true&cache=' . md5(rand(0, 999) . time()));
1131
+ $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA') ? '?' . POWERPRESS_BLUBRRY_API_QSA : '');
1132
+ $req_url .= (defined('POWERPRESS_PUBLISH_PROTECTED') ? '&protected=true' : '');
1133
+ $result_prog = $auth->api($accessToken, $req_url, array(), false, 60 * 30);
1134
+ $progad_error = $auth->getLastError();
1135
+ if (isset($result_prog['urls']) && is_array($result_prog['urls'])) {
1136
+ foreach ($result_prog['urls'] as $i => $url_pair) {
1137
+ // add the redirect to the key before adding this pair
1138
+ $progad_disable_urls += $url_pair;
1139
+ }
1140
+ } elseif (isset($result_prog['message']) && $result_prog['message'] == 'no media') {
1141
+ // no error--continue
1142
+ }
1143
+ else {
1144
+ $progad_error = $auth->getLastError();
1145
+ }
1146
+ }
1147
+ }
1148
+
1149
+ // query the wordpress database to match up the URLs that we need to update
1150
+ global $wpdb;
1151
+ $query = "SELECT meta_id, post_id, meta_key, meta_value FROM {$wpdb->postmeta} WHERE meta_key LIKE \"%enclosure\"";
1152
+ $results_data = $wpdb->get_results($query, ARRAY_A);
1153
+ foreach ($results_data as $idx => $data) {
1154
+ $meta_parts = explode("\n", $data['meta_value']);
1155
+
1156
+ if (strpos($meta_parts[0], 'ins.blubrry.com')) {
1157
+ $parts_array = explode('ins.blubrry.com', $meta_parts[0]);
1158
+ } else if (strpos($meta_parts[0], 'content3.blubrry.biz')) {
1159
+ $parts_array = explode('content3.blubrry.biz', $meta_parts[0]);
1160
+ } else if (strpos($meta_parts[0], 'mc.blubrry.com')) {
1161
+ $parts_array = explode('mc.blubrry.com', $meta_parts[0]);
1162
+ } elseif (strpos($meta_parts[0], 'content.blubrry.com')) {
1163
+ $parts_array = explode('content.blubrry.com', $meta_parts[0]);
1164
+ } else {
1165
+ // not Blubrry hosted
1166
+ continue;
1167
+ }
1168
+ $url_without_prefix = $parts_array[1];
1169
+ $parts_drop_qs = explode('?', $url_without_prefix);
1170
+ if (!empty($progad_enable_urls) && array_key_exists($parts_drop_qs[0], $progad_enable_urls)) {
1171
+ // now, if they have a redirect for the feed that this url is in, we need to replace the https://media.blubrry.com/{keyword}/ with those redirects
1172
+ $progad_url_with_pp_redirect = preg_replace('#https://media.blubrry.com/(.*)/#U', $redirect_array[$data['meta_key']], $progad_enable_urls[$parts_drop_qs[0]]);
1173
+ // replace the url in the meta_parts array, implode it back together, and update the program meta
1174
+ $meta_parts[0] = $progad_url_with_pp_redirect;
1175
+ $new_meta_value = implode("\n", $meta_parts);
1176
+ update_post_meta($data['post_id'], $data['meta_key'], $new_meta_value);
1177
+ } else if (!empty($progad_disable_urls) && array_key_exists($parts_drop_qs[0], $progad_disable_urls)) {
1178
+ $hosting_url_with_pp_redirect = preg_replace('#http(s?)://#U', $redirect_array[$data['meta_key']], $progad_disable_urls[$parts_drop_qs[0]]);
1179
+ // replace the url in the meta_parts array, implode it back together, and update the program meta
1180
+ $meta_parts[0] = $hosting_url_with_pp_redirect;
1181
+ $new_meta_value = implode("\n", $meta_parts);
1182
+ update_post_meta($data['post_id'], $data['meta_key'], $new_meta_value);
1183
+ }
1184
+ }
1185
+ if ($progad_error) {
1186
+ powerpress_add_error("Error syncing Programmatic Advertising Settings: " . $progad_error);
1187
+ } else {
1188
+ powerpress_page_message_add_notice("Successfully synced Programmatic Advertising Settings from Blubrry.", 'inline', false);
1189
+ }
1190
+ }; break;
1191
  case 'powerpress-enable-categorypodcasting': {
1192
  check_admin_referer('powerpress-enable-categorypodcasting');
1193
 
2743
  if (url.includes('mc.blubrry.com')) {
2744
  validChars = ':0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-_.?=&%:';
2745
  }
2746
+ // for blubrry's programmatic ads, we include %s to encode the feed url in the query string
2747
+ if (url.includes('mc.blubrry.com')) {
2748
+ validChars = ':0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-_.?=&%;:';
2749
+ }
2750
  let FeedSlug = DestDiv.replace("powerpress_warning_", "");
2751
 
2752
  for( var x = 0; x < url.length; x++ )
2846
  }
2847
 
2848
  if (Parts[4]) {
2849
+ self.parent.document.getElementById('powerpress_url_' + FeedSlug).value = Parts[4];
 
2850
  }
2851
 
2852
 
3148
  {
3149
  $media_url = rtrim($GeneralSettings['default_url'], '/') .'/'. $media_url;
3150
  }
3151
+ // for media creek urls, just verify the content.blubrry.com version
3152
+ if (strpos($media_url, 'mc.blubrry.com') !== false) {
3153
+ //remove query string
3154
+ $media_url_array = explode('?', $media_url);
3155
+ $media_url = $media_url_array[0];
3156
+ // replace media host
3157
+ $media_url = str_replace('mc.blubrry.com', 'content.blubrry.com', $media_url);
3158
+ }
3159
+
3160
+ $ContentType = false;
3161
  $UrlParts = parse_url($media_url);
3162
  if( !empty($UrlParts['path']) )
3163
  {
3984
  if( $feed_slug != 'podcast' )
3985
  $field = '_'.$feed_slug.':enclosure';
3986
  $EnclosureData = get_post_meta($post_ID, $field, true);
3987
+ $post_guid = get_the_guid($post_ID);
3988
+ $post_time = get_post_time('U', false, $post_ID);
3989
  if( $EnclosureData )
3990
  {
3991
  /*
4028
  {
4029
  $results = powerpress_write_tags($EnclosureURL, $post_title, $program_keyword);
4030
  // if error, try inputting just the file name in case it's unpublished
4031
+ if ( ( strpos($EnclosureURL, 'ins.blubrry.com') || strpos($EnclosureURL, 'content.blubrry.com') || strpos($EnclosureURL, 'protected.blubrry.com') || strpos($EnclosureURL, 'mc.blubrry.com')) && (isset($results['error']) || !is_array($results) || !$results) ) {
4032
  $EnclosureUrLArray = explode('/', $EnclosureURL);
4033
  $EnclosureURL = end($EnclosureUrLArray);
4034
+ $EnclosureUrlQSArray = explode('?', $EnclosureURL);
4035
+ $EnclosureURL = $EnclosureUrlQSArray[0];
4036
  $results = powerpress_write_tags($EnclosureURL, $post_title, $program_keyword);
4037
  }
4038
  }
4043
  $EnclosureFullURL = $EnclosureURL;
4044
  $EnclosureUrLArray = explode('/', $EnclosureURL);
4045
  $EnclosureURL = end($EnclosureUrLArray);
4046
+ $EnclosureUrlQSArray = explode('?', $EnclosureURL);
4047
+ $EnclosureURL = $EnclosureUrlQSArray[0];
4048
  $results = powerpress_get_media_info($EnclosureURL, $program_keyword);
4049
 
4050
  // if error, try the full URL
4079
 
4080
  if( $error == false )
4081
  {
4082
+ $post_vars = array('podcast_guid' => $post_guid, 'podcast_post_date' => $post_time, 'podcast_title' => $post_title, 'podcast_subtitle' => isset($EpisodeData['subtitle']) ? $EpisodeData['subtitle'] : '');
4083
+ // Extend the max execution time here
4084
  set_time_limit(60*20); // give it 20 minutes just in case
4085
  $json_data = false;
4086
  $api_url_array = powerpress_get_api_array();
4089
  $req_url = sprintf('/2/media/%s/%s?format=json&publish=true&cache=' . md5( rand(0, 999) . time() ), urlencode($program_keyword), urlencode($EnclosureURL));
4090
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA')?'?'. POWERPRESS_BLUBRRY_API_QSA:'');
4091
  $req_url .= (defined('POWERPRESS_PUBLISH_PROTECTED') ? '&protected=true' : '');
4092
+ $results = $auth->api($accessToken, $req_url, $post_vars, false, 60 * 30);
4093
  } else {
4094
  foreach ($api_url_array as $index => $api_url) {
4095
  $req_url = sprintf('%s/media/%s/%s?format=json&publish=true&cache=' . md5( rand(0, 999) . time() ), rtrim($api_url, '/'), urlencode($program_keyword), urlencode($EnclosureURL));
4096
  $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA') ? '&' . POWERPRESS_BLUBRRY_API_QSA : '');
4097
  $req_url .= (defined('POWERPRESS_PUBLISH_PROTECTED') ? '&protected=true' : '');
4098
+ $json_data = powerpress_remote_fopen($req_url, $Settings['blubrry_auth'], $post_vars, 60 * 30); // give this up to 30 minutes, though 3 seocnds to 20 seconds is all one should need.
4099
  if (!$json_data && $api_url == 'https://api.blubrry.com/') { // Lets force cURL and see if that helps...
4100
+ $json_data = powerpress_remote_fopen($req_url, $Settings['blubrry_auth'], $post_vars, 60 * 30, false, true);
4101
  }
4102
  if ($json_data != false)
4103
  break;
4133
  else if( !empty($GLOBALS['g_powerpress_remote_error']) )
4134
  $error .= htmlspecialchars($GLOBALS['g_powerpress_remote_error']);
4135
  else
4136
+ $error .= __('Unknown error occurred.', 'powerpress');
4137
  $error .= '</div>';
4138
  powerpress_add_error($error);
4139
  }
4610
  if( empty($program_Keyword) && !empty($Settings['blubrry_program_keyword']) ) {
4611
  $program_Keyword = $Settings['blubrry_program_keyword'];
4612
  }
4613
+ // for media creek urls, just verify the content.blubrry.com version
4614
+ if (strpos($file, 'mc.blubrry.com') !== false) {
4615
+ //remove query string
4616
+ $file_array = explode('?', $file);
4617
+ $file = $file_array[0];
4618
+ // replace media host
4619
+ $file = str_replace('mc.blubrry.com', 'content.blubrry.com', $file);
4620
+ }
4621
  $content = false;
4622
  $Results = array();
4623
+ $full_url = true;
4624
  $api_url_array = powerpress_get_api_array();
4625
+ if (substr($file, 0, 4) != 'http') {
4626
+ // filename only, remove query string
4627
+ $file_array = explode('?', $file);
4628
+ $file = $file_array[0];
4629
+ $full_url = false;
4630
+ }
4631
  if ($creds) {
4632
  $accessToken = powerpress_getAccessToken();
4633
  $req_url = sprintf('/2/media/%s/%s?format=json&info=true', urlencode($program_Keyword), urlencode($file));
4654
  if ($Results && is_array($Results))
4655
  return $Results;
4656
 
4657
+ if ($full_url) {
4658
+ // if no results, try verifying the unpublished version of the file
4659
+ $file_array = explode('/', $file);
4660
+ $file = $file_array[count($file_array) - 1];
4661
+ // remove query string
4662
+ $file_array = explode('?', $file);
4663
+ $file = $file_array[0];
4664
+ $content = false;
4665
+ $Results = array();
4666
+
4667
+ if ($creds) {
4668
+ $accessToken = powerpress_getAccessToken();
4669
+ $req_url = sprintf('/2/media/%s/%s?format=json&info=true', urlencode($program_Keyword), urlencode($file));
4670
+ $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA') ? '?' . POWERPRESS_BLUBRRY_API_QSA : '');
4671
+ $Results = $auth->api($accessToken, $req_url, false);
4672
+ } else {
4673
+ foreach ($api_url_array as $index => $api_url) {
4674
+ $req_url = sprintf('%s/media/%s/%s?format=json&info=true', rtrim($api_url, '/'), urlencode($program_Keyword), urlencode($file));
4675
+ $req_url .= (defined('POWERPRESS_BLUBRRY_API_QSA') ? '&' . POWERPRESS_BLUBRRY_API_QSA : '');
4676
+ $content = powerpress_remote_fopen($req_url, $Settings['blubrry_auth']);
4677
+ if (!$content && $api_url == 'https://api.blubrry.com/') { // Lets force cURL and see if that helps...
4678
+ $content = powerpress_remote_fopen($req_url, $Settings['blubrry_auth'], array(), 15, false, true);
4679
+ }
4680
 
4681
+ if ($content != false)
4682
+ break;
 
 
 
 
 
 
 
 
 
 
4683
  }
4684
 
4685
+ if ($content) {
4686
+ $Results = powerpress_json_decode($content);
4687
+ }
 
 
 
4688
  }
4689
  }
4690
 
 
 
 
 
4691
  if ($Results && is_array($Results))
4692
  return $Results;
4693
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: podcasting, podcast, podcaster, powerpress, itunes, apple, apple podcasts,
4
  Requires at least: 3.6
5
  Requires PHP: 5.2
6
  Tested up to: 6.0
7
- Stable tag: 9.1.4
8
  Donate link: https://create.blubrry.com/resources/podcast-media-hosting/
9
  License: GPLv2 or later
10
 
@@ -186,6 +186,10 @@ If you are a fan of PowerPress, we would greatly appreciate it if you could take
186
 
187
  == Changelog ==
188
 
 
 
 
 
189
  = 9.1.4 =
190
  * Released on 08/03/2022
191
  * Encode html special characters in media URLs
4
  Requires at least: 3.6
5
  Requires PHP: 5.2
6
  Tested up to: 6.0
7
+ Stable tag: 9.2
8
  Donate link: https://create.blubrry.com/resources/podcast-media-hosting/
9
  License: GPLv2 or later
10
 
186
 
187
  == Changelog ==
188
 
189
+ = 9.2 =
190
+ * Released on 08/17/2022
191
+ * Support for Programmatic Ads thru Blubrry
192
+
193
  = 9.1.4 =
194
  * Released on 08/03/2022
195
  * Encode html special characters in media URLs