Download Monitor - Version 1.9.0

Version Description

Download this release

Release Info

Developer barrykooij
Plugin Icon 128x128 Download Monitor
Version 1.9.0
Comparing to
See all releases

Code changes from version 1.8.1 to 1.9.0

assets/css/admin.css CHANGED
@@ -1 +1 @@
1
- #dlm_logs td{padding:7px;vertical-align:middle}#dlm_logs .column-status{width:4em}#dlm_logs td.column-status{font-size:10px;vertical-align:middle;text-align:center}#dlm_logs td.column-status span{color:#fff;font-weight:400;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%;height:18px;line-height:18px;width:18px;display:inline-block;background:url(../images/log-status-icons.png) top left no-repeat}#dlm_logs td.column-status .completed{background-color:#6cc644}#dlm_logs td.column-status .failed{background-color:#bd2c00;background-position-y:-18px}#dlm_logs td.column-status .redirected{background-color:#1c769b;background-position-y:-36px}#dlm_logs td.column-user_agent,#dlm_logs td.column-user_ip{font-family:monospace;font-weight:400}#dlm_logs span.dlm-description{font-weight:400}#dlm_logs .column-download,#dlm_logs .column-file,#dlm_logs .column-user,#dlm_logs .column-user_ua{width:16%!important}#dlm_logs .column-date,#dlm_logs .column-user_ip{width:6%!important}ul.download_monitor_file_browser{list-style:none outside;margin:0;border:1px solid #ddd;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:#f9f9f9;padding:5px;-moz-box-shadow:inset 0 0 0 1px #fff;-webkit-box-shadow:inset 0 0 0 1px #fff;box-shadow:inset 0 0 0 1px #fff}ul.download_monitor_file_browser li{padding:0;margin:0}ul.download_monitor_file_browser li a{color:#21759B;display:block;padding:4px 0 4px 4px;text-decoration:none}ul.download_monitor_file_browser li a:hover{background-color:#eaf2fa}ul.download_monitor_file_browser li a:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f123";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.folder:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f318";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-3g2:before,ul.download_monitor_file_browser li a.filetype-3gp:before,ul.download_monitor_file_browser li a.filetype-asf:before,ul.download_monitor_file_browser li a.filetype-asx:before,ul.download_monitor_file_browser li a.filetype-avi:before,ul.download_monitor_file_browser li a.filetype-mov:before,ul.download_monitor_file_browser li a.filetype-mp4:before,ul.download_monitor_file_browser li a.filetype-mpg:before,ul.download_monitor_file_browser li a.filetype-rm:before,ul.download_monitor_file_browser li a.filetype-srt:before,ul.download_monitor_file_browser li a.filetype-vob:before,ul.download_monitor_file_browser li a.filetype-wmv:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f126";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-aif:before,ul.download_monitor_file_browser li a.filetype-iff:before,ul.download_monitor_file_browser li a.filetype-m3u:before,ul.download_monitor_file_browser li a.filetype-m4a:before,ul.download_monitor_file_browser li a.filetype-mid:before,ul.download_monitor_file_browser li a.filetype-midi:before,ul.download_monitor_file_browser li a.filetype-mp3:before,ul.download_monitor_file_browser li a.filetype-mpa:before,ul.download_monitor_file_browser li a.filetype-ra:before,ul.download_monitor_file_browser li a.filetype-wav:before,ul.download_monitor_file_browser li a.filetype-wma:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f127";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-ai:before,ul.download_monitor_file_browser li a.filetype-bmp:before,ul.download_monitor_file_browser li a.filetype-dds:before,ul.download_monitor_file_browser li a.filetype-eps:before,ul.download_monitor_file_browser li a.filetype-gif:before,ul.download_monitor_file_browser li a.filetype-ico:before,ul.download_monitor_file_browser li a.filetype-jpeg:before,ul.download_monitor_file_browser li a.filetype-jpg:before,ul.download_monitor_file_browser li a.filetype-png:before,ul.download_monitor_file_browser li a.filetype-ps:before,ul.download_monitor_file_browser li a.filetype-psd:before,ul.download_monitor_file_browser li a.filetype-pspimage:before,ul.download_monitor_file_browser li a.filetype-svg:before,ul.download_monitor_file_browser li a.filetype-tga:before,ul.download_monitor_file_browser li a.filetype-thm:before,ul.download_monitor_file_browser li a.filetype-tif:before,ul.download_monitor_file_browser li a.filetype-yuv:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f128";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li.nofiles{color:#999;font-style:italic;padding:4px 0}ul.download_monitor_file_browser li ul{list-style:none outside;margin:0;padding:0 0 0 28px}ul.download_monitor_file_browser li ul.loading{background:url(../images/ajax-loader.gif) no-repeat 24px 0;height:32px}table.wp-list-table .column-thumb{width:44px;text-align:center;white-space:nowrap}table.wp-list-table .column-dlm_download_cat,table.wp-list-table .column-dlm_download_tag,table.wp-list-table .column-file{width:11%!important}table.wp-list-table .column-file,table.wp-list-table .column-title{width:17%!important}table.wp-list-table .column-download_id,table.wp-list-table .column-version{width:5em}table.wp-list-table th.column-download_count span:first-child,table.wp-list-table th.column-featured span:first-child,table.wp-list-table th.column-members_only span:first-child,table.wp-list-table th.column-redirect_only span:first-child,table.wp-list-table th.column-thumb span:first-child{float:none;display:inline-block;width:1em;height:1em;line-height:1em;padding:2px 0 0;overflow:hidden}table.wp-list-table th.column-download_count .sorting-indicator,table.wp-list-table th.column-featured .sorting-indicator,table.wp-list-table th.column-members_only .sorting-indicator,table.wp-list-table th.column-redirect_only .sorting-indicator,table.wp-list-table th.column-thumb .sorting-indicator{float:right}table.wp-list-table th.column-thumb{width:52px;text-align:center}table.wp-list-table th.column-thumb span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f128";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-download_count{width:5em}table.wp-list-table th.column-download_count span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f346";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-members_only{width:3.5em}table.wp-list-table th.column-members_only span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f338";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-redirect_only{width:3.5em}table.wp-list-table th.column-redirect_only span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f103";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-featured{width:3.5em}table.wp-list-table th.column-featured span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f155";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table td.column-download_count,table.wp-list-table td.column-featured,table.wp-list-table td.column-members_only,table.wp-list-table td.column-redirect_only{text-align:left;padding-left:11px}table.wp-list-table td.column-download_count span.na,table.wp-list-table td.column-featured span.na,table.wp-list-table td.column-members_only span.na,table.wp-list-table td.column-redirect_only span.na{color:#999;width:1em;height:1em;line-height:1em;display:inline-block;overflow:hidden;vertical-align:middle}table.wp-list-table td.column-download_count span.na:before,table.wp-list-table td.column-featured span.na:before,table.wp-list-table td.column-members_only span.na:before,table.wp-list-table td.column-redirect_only span.na:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table td.column-download_count span.yes,table.wp-list-table td.column-featured span.yes,table.wp-list-table td.column-members_only span.yes,table.wp-list-table td.column-redirect_only span.yes{width:1em;height:1em;line-height:1em;display:inline-block;overflow:hidden;vertical-align:middle}table.wp-list-table td.column-download_count span.yes:before,table.wp-list-table td.column-featured span.yes:before,table.wp-list-table td.column-members_only span.yes:before,table.wp-list-table td.column-redirect_only span.yes:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f147";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table .column-thumb img{padding:2px;margin:0;border:1px solid #dfdfdf;vertical-align:middle;width:32px;height:32px}#download-monitor-file .inside{padding:0;margin:0}#download-monitor-file .dlm-metaboxes-wrapper .close_all,#download-monitor-file .dlm-metaboxes-wrapper .expand_all{float:right;margin-left:1em;line-height:22px;text-decoration:none}#download-monitor-file .dlm-metaboxes-wrapper .expand_all:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f168";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .close_all:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper p.toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #DFDFDF;padding:7px 12px!important;overflow:hidden;zoom:1}#download-monitor-file .dlm-metaboxes-wrapper p.toolbar a.button{float:left;margin:0}#download-monitor-file .dlm-metaboxes-wrapper .fr,#download-monitor-file .dlm-metaboxes-wrapper button.add_attribute,#download-monitor-file .dlm-metaboxes-wrapper button.add_variable_attribute,#download-monitor-file .dlm-metaboxes-wrapper select.attribute_taxonomy{float:right;margin:0 0 0 6px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metaboxes{padding:0 12px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin:9px 0;border-width:1px;border-style:dashed}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox{background:#ececec;border:1px solid #ececec;margin:9px 0!important}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3{margin:0!important;padding:6px!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 button{float:right}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 strong{font-weight:400;line-height:24px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 select{font-family:sans-serif}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 .handlediv{background-position:6px 5px!important;display:none;height:24px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:hover h3 .handlediv{display:block}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table{width:100%;position:relative;background:#fff;padding:3px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td{text-align:left;padding:6px;vertical-align:top;border:0;line-height:26px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td label{text-align:left;display:block;line-height:21px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input{float:left;min-width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td textarea{height:7.5em}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td select{width:100%}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.short{width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.checkbox{width:auto;min-width:inherit;vertical-align:middle;display:inline;float:none}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.date-picker-field{width:50%;min-width:inherit;float:none;display:inline}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.hour,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.minute{width:2em;min-width:inherit;float:none;display:inline}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td.attribute_name{width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .minus,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .plus{margin-top:6px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .fl{float:left}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .fr{float:right}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:first-child h3{background:#EAF2FA;background-image:linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-o-linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-moz-linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-webkit-linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-ms-linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#dae6f2),color-stop(1,#eaf2fa));border-color:#d3deea;color:#21759B}#download-monitor-file .dlm-metaboxes-wrapper .plus:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f132";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .minus:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .dlm_upload_file:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f317";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .dlm_browse_for_file:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f322";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-information p{overflow:hidden}#download-monitor-information p label{width:100%;font-weight:700;box-sizing:border-box;line-height:28px;float:left}#download-monitor-information p label input{width:65%;padding:5px;font-size:11px;font-weight:400;background:#eaeaea;border:0;box-shadow:none;box-sizing:border-box;float:right}#download-monitor-options .inside{padding:0;margin:0}#download-monitor-options .form-field-checkbox label{display:inline;padding:0 0 4px}#download-monitor-options .form-field-checkbox input{display:inline-block;width:auto;vertical-align:middle}#download-monitor-options .form-field-checkbox .dlm-description{padding:4px 0 0;display:block}#download-monitor-options .access_permissions{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #DFDFDF;padding:7px 12px!important;overflow:hidden;zoom:1}#download-monitor-options .access_permissions h4{margin:0 0 .5em}#download-monitor-options .access_permissions ul{background:#fff;border:1px solid #dfdfdf;height:110px;overflow:auto;padding:.5em .9em;margin:0}#download-monitor-options p{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #DFDFDF;padding:7px 12px!important;overflow:hidden;zoom:1}#insert-download{padding:20px}#insert-download .error,#insert-download .updated{margin-left:0;margin-right:0}#insert-download h2{margin-top:0}#insert-download label{margin:0 0 .25em;display:block;font-size:1.1em}#insert-download span.description{display:block}#insert-download input.input{margin:0 0 .25em;display:block;width:100%;font-size:1.1em}#insert-download .add_link{float:right}#insert-download ul.page-numbers{overflow:hidden;zoom:1;margin:0 auto;padding:0;text-align:center}#insert-download ul.page-numbers li{display:inline-block;margin:0;list-style:none outside;line-height:1em}#insert-download ul.page-numbers li a,#insert-download ul.page-numbers li span{text-decoration:none;border:1px solid #ddd;-webkit-border-radius:4px;border-radius:4px;padding:8px;display:block}#insert-download ul.page-numbers li span{border-color:#eee}#insert-download legend{font-weight:700;display:block;margin:0 0 1em}#insert-download fieldset label{display:block;margin:0 0 .5em}.dlm_extensions_wrap h2 a.dlm-reload-button{float:right}.dlm_extensions_wrap .dlm_extensions{padding:15px 0;overflow:hidden}.dlm_extensions_wrap .dlm_extensions div.dlm_extension{cursor:auto!important}.dlm_extensions_wrap .dlm_extensions div.dlm_extension a{color:#444;text-decoration:none}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .dlm_extension_img_wrapper{width:100%;background:#419CCB;text-align:center}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .dlm_extension_img_wrapper img{max-width:100%;margin:0 auto}.dlm_extensions_wrap .dlm_extensions div.dlm_extension h3{padding:0 20px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension p.extension-desc{min-height:85px;padding:0 20px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer{padding:0 20px 15px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price{font-weight:700}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price.sale{color:green}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price.sale strike{color:#444}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_more{color:#459ac9;text-decoration:none;font-weight:700;float:right}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license{padding:0 20px 20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license p.license-status{padding:5px 0;margin:5px 0;background:red;font-weight:700;font-size:1.2em;color:#fff;text-align:center}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license p.license-status.active{background:green}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license input{width:100%;margin:7px 0;padding:7px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license a.button-primary{width:100%;margin:5px auto 0;color:#fff;text-align:center}
1
+ #dlm_logs td{padding:7px;vertical-align:middle}#dlm_logs .check-column{width:1.5em;padding:0;vertical-align:middle}#dlm_logs .column-status{width:2em}#dlm_logs td.column-status{font-size:10px;vertical-align:middle;text-align:center}#dlm_logs td.column-status span{color:#fff;font-weight:400;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%;height:18px;line-height:18px;width:18px;display:inline-block;background:url(../images/log-status-icons.png) top left no-repeat}#dlm_logs td.column-status .completed{background-color:#6cc644}#dlm_logs td.column-status .failed{background-color:#bd2c00;background-position-y:-18px}#dlm_logs td.column-status .redirected{background-color:#1c769b;background-position-y:-36px}#dlm_logs td.column-user_agent,#dlm_logs td.column-user_ip{font-family:monospace;font-weight:400}#dlm_logs span.dlm-description{font-weight:400}#dlm_logs .column-download,#dlm_logs .column-file,#dlm_logs .column-user,#dlm_logs .column-user_ua{width:16%!important}#dlm_logs .column-date,#dlm_logs .column-user_ip{width:6%!important}.post-type-dlm_download .inline-edit-row .inline-edit-col-dlm .inline-edit-col-dlm-inner{margin-top:10px}ul.download_monitor_file_browser{list-style:none outside;margin:0;border:1px solid #ddd;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:#f9f9f9;padding:5px;-moz-box-shadow:inset 0 0 0 1px #fff;-webkit-box-shadow:inset 0 0 0 1px #fff;box-shadow:inset 0 0 0 1px #fff}ul.download_monitor_file_browser li{padding:0;margin:0}ul.download_monitor_file_browser li a{color:#21759B;display:block;padding:4px 0 4px 4px;text-decoration:none}ul.download_monitor_file_browser li a:hover{background-color:#eaf2fa}ul.download_monitor_file_browser li a:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f123";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.folder:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f318";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-3g2:before,ul.download_monitor_file_browser li a.filetype-3gp:before,ul.download_monitor_file_browser li a.filetype-asf:before,ul.download_monitor_file_browser li a.filetype-asx:before,ul.download_monitor_file_browser li a.filetype-avi:before,ul.download_monitor_file_browser li a.filetype-mov:before,ul.download_monitor_file_browser li a.filetype-mp4:before,ul.download_monitor_file_browser li a.filetype-mpg:before,ul.download_monitor_file_browser li a.filetype-rm:before,ul.download_monitor_file_browser li a.filetype-srt:before,ul.download_monitor_file_browser li a.filetype-vob:before,ul.download_monitor_file_browser li a.filetype-wmv:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f126";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-aif:before,ul.download_monitor_file_browser li a.filetype-iff:before,ul.download_monitor_file_browser li a.filetype-m3u:before,ul.download_monitor_file_browser li a.filetype-m4a:before,ul.download_monitor_file_browser li a.filetype-mid:before,ul.download_monitor_file_browser li a.filetype-midi:before,ul.download_monitor_file_browser li a.filetype-mp3:before,ul.download_monitor_file_browser li a.filetype-mpa:before,ul.download_monitor_file_browser li a.filetype-ra:before,ul.download_monitor_file_browser li a.filetype-wav:before,ul.download_monitor_file_browser li a.filetype-wma:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f127";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-ai:before,ul.download_monitor_file_browser li a.filetype-bmp:before,ul.download_monitor_file_browser li a.filetype-dds:before,ul.download_monitor_file_browser li a.filetype-eps:before,ul.download_monitor_file_browser li a.filetype-gif:before,ul.download_monitor_file_browser li a.filetype-ico:before,ul.download_monitor_file_browser li a.filetype-jpeg:before,ul.download_monitor_file_browser li a.filetype-jpg:before,ul.download_monitor_file_browser li a.filetype-png:before,ul.download_monitor_file_browser li a.filetype-ps:before,ul.download_monitor_file_browser li a.filetype-psd:before,ul.download_monitor_file_browser li a.filetype-pspimage:before,ul.download_monitor_file_browser li a.filetype-svg:before,ul.download_monitor_file_browser li a.filetype-tga:before,ul.download_monitor_file_browser li a.filetype-thm:before,ul.download_monitor_file_browser li a.filetype-tif:before,ul.download_monitor_file_browser li a.filetype-yuv:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f128";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li.nofiles{color:#999;font-style:italic;padding:4px 0}ul.download_monitor_file_browser li ul{list-style:none outside;margin:0;padding:0 0 0 28px}ul.download_monitor_file_browser li ul.loading{background:url(../images/ajax-loader.gif) no-repeat 24px 0;height:32px}table.wp-list-table .column-thumb{width:44px;text-align:center;white-space:nowrap}table.wp-list-table .column-dlm_download_cat,table.wp-list-table .column-dlm_download_tag,table.wp-list-table .column-file{width:11%!important}table.wp-list-table .column-file,table.wp-list-table .column-title{width:17%!important}table.wp-list-table .column-download_id,table.wp-list-table .column-version{width:5em}table.wp-list-table th.column-download_count span:first-child,table.wp-list-table th.column-featured span:first-child,table.wp-list-table th.column-members_only span:first-child,table.wp-list-table th.column-redirect_only span:first-child,table.wp-list-table th.column-thumb span:first-child{float:none;display:inline-block;width:1em;height:1em;line-height:1em;padding:2px 0 0;overflow:hidden}table.wp-list-table th.column-download_count .sorting-indicator,table.wp-list-table th.column-featured .sorting-indicator,table.wp-list-table th.column-members_only .sorting-indicator,table.wp-list-table th.column-redirect_only .sorting-indicator,table.wp-list-table th.column-thumb .sorting-indicator{float:right}table.wp-list-table th.column-thumb{width:52px;text-align:center}table.wp-list-table th.column-thumb span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f128";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-download_count{width:5em}table.wp-list-table th.column-download_count span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f346";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-members_only{width:3.5em}table.wp-list-table th.column-members_only span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f338";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-redirect_only{width:3.5em}table.wp-list-table th.column-redirect_only span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f103";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-featured{width:3.5em}table.wp-list-table th.column-featured span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f155";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table td.column-download_count,table.wp-list-table td.column-featured,table.wp-list-table td.column-members_only,table.wp-list-table td.column-redirect_only{text-align:left;padding-left:11px}table.wp-list-table td.column-download_count span.na,table.wp-list-table td.column-featured span.na,table.wp-list-table td.column-members_only span.na,table.wp-list-table td.column-redirect_only span.na{color:#999;width:1em;height:1em;line-height:1em;display:inline-block;overflow:hidden;vertical-align:middle}table.wp-list-table td.column-download_count span.na:before,table.wp-list-table td.column-featured span.na:before,table.wp-list-table td.column-members_only span.na:before,table.wp-list-table td.column-redirect_only span.na:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table td.column-download_count span.yes,table.wp-list-table td.column-featured span.yes,table.wp-list-table td.column-members_only span.yes,table.wp-list-table td.column-redirect_only span.yes{width:1em;height:1em;line-height:1em;display:inline-block;overflow:hidden;vertical-align:middle}table.wp-list-table td.column-download_count span.yes:before,table.wp-list-table td.column-featured span.yes:before,table.wp-list-table td.column-members_only span.yes:before,table.wp-list-table td.column-redirect_only span.yes:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f147";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table .column-thumb img{padding:2px;margin:0;border:1px solid #dfdfdf;vertical-align:middle;width:32px;height:32px}#download-monitor-file .inside{padding:0;margin:0}#download-monitor-file .dlm-metaboxes-wrapper .close_all,#download-monitor-file .dlm-metaboxes-wrapper .expand_all{float:right;margin-left:1em;line-height:22px;text-decoration:none}#download-monitor-file .dlm-metaboxes-wrapper .expand_all:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f168";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .close_all:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper p.toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #DFDFDF;padding:7px 12px!important;overflow:hidden;zoom:1}#download-monitor-file .dlm-metaboxes-wrapper p.toolbar a.button{float:left;margin:0}#download-monitor-file .dlm-metaboxes-wrapper .fr,#download-monitor-file .dlm-metaboxes-wrapper button.add_attribute,#download-monitor-file .dlm-metaboxes-wrapper button.add_variable_attribute,#download-monitor-file .dlm-metaboxes-wrapper select.attribute_taxonomy{float:right;margin:0 0 0 6px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metaboxes{padding:0 12px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin:9px 0;border-width:1px;border-style:dashed}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox{background:#ececec;border:1px solid #ececec;margin:9px 0!important}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3{margin:0!important;padding:6px!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 button{float:right}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 strong{font-weight:400;line-height:24px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 select{font-family:sans-serif}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 .handlediv{background-position:6px 5px!important;display:none;height:24px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:hover h3 .handlediv{display:block}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table{width:100%;position:relative;background:#fff;padding:3px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td{text-align:left;padding:6px;vertical-align:top;border:0;line-height:26px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td label{text-align:left;display:block;line-height:21px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input{float:left;min-width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td textarea{height:7.5em}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td select{width:100%}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.short{width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.checkbox{width:auto;min-width:inherit;vertical-align:middle;display:inline;float:none}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.date-picker-field{width:50%;min-width:inherit;float:none;display:inline}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.hour,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.minute{width:2em;min-width:inherit;float:none;display:inline}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td.attribute_name{width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .minus,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .plus{margin-top:6px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .fl{float:left}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .fr{float:right}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:first-child h3{background:#EAF2FA;background-image:linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-o-linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-moz-linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-webkit-linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-ms-linear-gradient(bottom,#dae6f2 0,#eaf2fa 100%);background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#dae6f2),color-stop(1,#eaf2fa));border-color:#d3deea;color:#21759B}#download-monitor-file .dlm-metaboxes-wrapper .plus:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f132";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .minus:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .dlm_upload_file:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f317";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .dlm_browse_for_file:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f322";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-information p{overflow:hidden}#download-monitor-information p label{width:100%;font-weight:700;box-sizing:border-box;line-height:28px;float:left}#download-monitor-information p label input{width:65%;padding:5px;font-size:11px;font-weight:400;background:#eaeaea;border:0;box-shadow:none;box-sizing:border-box;float:right}#download-monitor-options .inside{padding:0;margin:0}#download-monitor-options .form-field-checkbox label{display:inline;padding:0 0 4px}#download-monitor-options .form-field-checkbox input{display:inline-block;width:auto;vertical-align:middle}#download-monitor-options .form-field-checkbox .dlm-description{padding:4px 0 0;display:block}#download-monitor-options .access_permissions{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #DFDFDF;padding:7px 12px!important;overflow:hidden;zoom:1}#download-monitor-options .access_permissions h4{margin:0 0 .5em}#download-monitor-options .access_permissions ul{background:#fff;border:1px solid #dfdfdf;height:110px;overflow:auto;padding:.5em .9em;margin:0}#download-monitor-options p{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #DFDFDF;padding:7px 12px!important;overflow:hidden;zoom:1}#insert-download{padding:20px}#insert-download .error,#insert-download .updated{margin-left:0;margin-right:0}#insert-download h2{margin-top:0}#insert-download label{margin:0 0 .25em;display:block;font-size:1.1em}#insert-download span.description{display:block}#insert-download input.input{margin:0 0 .25em;display:block;width:100%;font-size:1.1em}#insert-download .add_link{float:right}#insert-download ul.page-numbers{overflow:hidden;zoom:1;margin:0 auto;padding:0;text-align:center}#insert-download ul.page-numbers li{display:inline-block;margin:0;list-style:none outside;line-height:1em}#insert-download ul.page-numbers li a,#insert-download ul.page-numbers li span{text-decoration:none;border:1px solid #ddd;-webkit-border-radius:4px;border-radius:4px;padding:8px;display:block}#insert-download ul.page-numbers li span{border-color:#eee}#insert-download legend{font-weight:700;display:block;margin:0 0 1em}#insert-download fieldset label{display:block;margin:0 0 .5em}.dlm_extensions_wrap h2 a.dlm-reload-button{float:right}.dlm_extensions_wrap .dlm_extensions{padding:15px 0;overflow:hidden}.dlm_extensions_wrap .dlm_extensions div.dlm_extension{cursor:auto!important}.dlm_extensions_wrap .dlm_extensions div.dlm_extension a{color:#444;text-decoration:none}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .dlm_extension_img_wrapper{width:100%;background:#419CCB;text-align:center}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .dlm_extension_img_wrapper img{max-width:100%;margin:0 auto}.dlm_extensions_wrap .dlm_extensions div.dlm_extension h3{padding:0 20px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension p.extension-desc{min-height:85px;padding:0 20px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer{padding:0 20px 15px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price{font-weight:700}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price.sale{color:green}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price.sale strike{color:#444}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_more{color:#459ac9;text-decoration:none;font-weight:700;float:right}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license{padding:0 20px 20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license p.license-status{padding:5px 0;margin:5px 0;background:red;font-weight:700;font-size:1.2em;color:#fff;text-align:center}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license p.license-status.active{background:green}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license input{width:100%;margin:7px 0;padding:7px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license a.button-primary{width:100%;margin:5px auto 0;color:#fff;text-align:center}
assets/css/admin.less CHANGED
@@ -22,8 +22,14 @@
22
  padding: 7px 7px;
23
  vertical-align: middle;
24
  }
 
 
 
 
 
 
25
  .column-status {
26
- width: 4em;
27
  }
28
  td.column-status {
29
  font-size: 10px;
@@ -68,6 +74,16 @@
68
  }
69
  }
70
 
 
 
 
 
 
 
 
 
 
 
71
  /* File lists */
72
  ul.download_monitor_file_browser {
73
  list-style: none outside;
@@ -443,7 +459,7 @@ table.wp-list-table {
443
  overflow: hidden;
444
  label {
445
  width: 100%;
446
- // font-size: 11px;
447
  font-weight: bold;
448
  box-sizing: border-box;
449
  line-height: 28px;
@@ -578,6 +594,7 @@ table.wp-list-table {
578
  }
579
  }
580
 
 
581
  .dlm_extensions_wrap {
582
  h2 {
583
  a.dlm-reload-button {
22
  padding: 7px 7px;
23
  vertical-align: middle;
24
  }
25
+ .check-column {
26
+ width: 1.5em;
27
+ padding: 0;
28
+ vertical-align: middle;
29
+ }
30
+
31
  .column-status {
32
+ width: 2em;
33
  }
34
  td.column-status {
35
  font-size: 10px;
74
  }
75
  }
76
 
77
+ .post-type-dlm_download {
78
+ .inline-edit-row {
79
+ .inline-edit-col-dlm {
80
+ .inline-edit-col-dlm-inner {
81
+ margin-top: 10px;
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
  /* File lists */
88
  ul.download_monitor_file_browser {
89
  list-style: none outside;
459
  overflow: hidden;
460
  label {
461
  width: 100%;
462
+ // font-size: 11px;
463
  font-weight: bold;
464
  box-sizing: border-box;
465
  line-height: 28px;
594
  }
595
  }
596
 
597
+ /* Extensions */
598
  .dlm_extensions_wrap {
599
  h2 {
600
  a.dlm-reload-button {
download-monitor.php CHANGED
@@ -3,11 +3,12 @@
3
  Plugin Name: Download Monitor
4
  Plugin URI: https://www.download-monitor.com
5
  Description: A full solution for managing downloadable files, monitoring downloads and outputting download links and file information on your WordPress powered site.
6
- Version: 1.8.1
7
  Author: Never5
8
  Author URI: https://www.never5.com
9
  Requires at least: 3.8
10
  Tested up to: 4.3
 
11
 
12
  License: GPL v3
13
 
@@ -32,7 +33,7 @@ if ( ! defined( 'ABSPATH' ) ) {
32
  } // Exit if accessed directly
33
 
34
  // Define DLM Version
35
- define( 'DLM_VERSION', '1.8.1' );
36
 
37
  function __download_monitor_main() {
38
 
@@ -63,12 +64,9 @@ if ( is_admin() && ( false === defined( 'DOING_AJAX' ) || false === DOING_AJAX )
63
  // Activation hook
64
  register_activation_hook( DLM_PLUGIN_FILE_INSTALLER, '__download_monitor_install' );
65
 
66
- // Flush Rewrites on Activation
67
- register_activation_hook( DLM_PLUGIN_FILE_INSTALLER, 'flush_rewrite_rules', 11 );
68
-
69
  // Multisite new blog hook
70
  add_action( 'wpmu_new_blog', '__download_monitor_mu_new_blog', 10, 6 );
71
 
72
  // Multisite blog delete
73
  add_filter( 'wpmu_drop_tables', '__download_monitor_mu_delete_blog' );
74
- }
3
  Plugin Name: Download Monitor
4
  Plugin URI: https://www.download-monitor.com
5
  Description: A full solution for managing downloadable files, monitoring downloads and outputting download links and file information on your WordPress powered site.
6
+ Version: 1.9.0
7
  Author: Never5
8
  Author URI: https://www.never5.com
9
  Requires at least: 3.8
10
  Tested up to: 4.3
11
+ Text Domain: download-monitor
12
 
13
  License: GPL v3
14
 
33
  } // Exit if accessed directly
34
 
35
  // Define DLM Version
36
+ define( 'DLM_VERSION', '1.9.0' );
37
 
38
  function __download_monitor_main() {
39
 
64
  // Activation hook
65
  register_activation_hook( DLM_PLUGIN_FILE_INSTALLER, '__download_monitor_install' );
66
 
 
 
 
67
  // Multisite new blog hook
68
  add_action( 'wpmu_new_blog', '__download_monitor_mu_new_blog', 10, 6 );
69
 
70
  // Multisite blog delete
71
  add_filter( 'wpmu_drop_tables', '__download_monitor_mu_delete_blog' );
72
+ }
includes/admin/class-dlm-admin-cpt.php CHANGED
@@ -26,6 +26,11 @@ class DLM_Admin_CPT {
26
  add_filter( 'post_updated_messages', array( $this, 'post_updated_messages' ) );
27
  add_filter( 'manage_edit-dlm_download_sortable_columns', array( $this, 'sortable_columns' ) );
28
  add_filter( 'request', array( $this, 'sort_columns' ) );
 
 
 
 
 
29
  }
30
 
31
  /**
@@ -357,4 +362,91 @@ class DLM_Admin_CPT {
357
  return $vars;
358
  }
359
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  }
26
  add_filter( 'post_updated_messages', array( $this, 'post_updated_messages' ) );
27
  add_filter( 'manage_edit-dlm_download_sortable_columns', array( $this, 'sortable_columns' ) );
28
  add_filter( 'request', array( $this, 'sort_columns' ) );
29
+
30
+ // bulk and quick edit
31
+ add_action( 'bulk_edit_custom_box', array( $this, 'bulk_quick_edit' ), 10, 2 );
32
+ add_action( 'quick_edit_custom_box', array( $this, 'bulk_quick_edit' ), 10, 2 );
33
+ add_action( 'save_post', array( $this, 'bulk_and_quick_edit_save_post' ), 10, 2 );
34
  }
35
 
36
  /**
362
  return $vars;
363
  }
364
 
365
+ /**
366
+ * Custom bulk edit - form
367
+ *
368
+ * @param mixed $column_name
369
+ * @param mixed $post_type
370
+ */
371
+ public function bulk_quick_edit( $column_name, $post_type ) {
372
+
373
+ // only on our PT
374
+ if ( 'dlm_download' != $post_type || 'featured' != $column_name ) {
375
+ return;
376
+ }
377
+
378
+ // nonce field
379
+ wp_nonce_field( 'dlm_bulk_quick_edit_nonce', 'dlm_bulk_quick_edit_nonce' );
380
+
381
+ ?>
382
+ <fieldset class="inline-edit-col-right inline-edit-col-dlm">
383
+ <div class="inline-edit-col inline-edit-col-dlm-inner">
384
+ <span class="title"><?php _e( 'Download Monitor Data', 'download-monitor' ); ?></span><br/>
385
+ <label for="_featured"><input type="checkbox" name="_featured" id="_featured"
386
+ value="1"/><?php _e( 'Featured download', 'download-monitor' ); ?></label>
387
+ <label for="_members_only"><input type="checkbox" name="_members_only" id="_members_only"
388
+ value="1"/><?php _e( 'Members only', 'download-monitor' ); ?></label>
389
+ <label for="_redirect_only"><input type="checkbox" name="_redirect_only" id="_redirect_only"
390
+ value="1"/><?php _e( 'Redirect to file', 'download-monitor' ); ?>
391
+ </label>
392
+ </div>
393
+ </fieldset>
394
+ <?php
395
+ }
396
+
397
+ /**
398
+ * Quick and bulk edit saving
399
+ *
400
+ * @param int $post_id
401
+ * @param WP_Post $post
402
+ *
403
+ * @return int
404
+ */
405
+ public function bulk_and_quick_edit_save_post( $post_id, $post ) {
406
+
407
+ // If this is an autosave, our form has not been submitted, so we don't want to do anything.
408
+ if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
409
+ return $post_id;
410
+ }
411
+
412
+ // Don't save revisions and autosaves
413
+ if ( wp_is_post_revision( $post_id ) || wp_is_post_autosave( $post_id ) ) {
414
+ return $post_id;
415
+ }
416
+
417
+ // Check post type is product
418
+ if ( 'dlm_download' != $post->post_type ) {
419
+ return $post_id;
420
+ }
421
+
422
+ // Check user permission
423
+ if ( ! current_user_can( 'manage_downloads', $post_id ) ) {
424
+ return $post_id;
425
+ }
426
+
427
+ // Check nonces
428
+ if ( ! isset( $_REQUEST['dlm_bulk_quick_edit_nonce'] ) ) {
429
+ return $post_id;
430
+ }
431
+ if ( ! wp_verify_nonce( $_REQUEST['dlm_bulk_quick_edit_nonce'], 'dlm_bulk_quick_edit_nonce' ) ) {
432
+ return $post_id;
433
+ }
434
+
435
+ // set featured
436
+ if ( isset( $_REQUEST['_featured'] ) ) {
437
+ update_post_meta( $post_id, '_featured', 'yes' );
438
+ }
439
+
440
+ // set members only
441
+ if ( isset( $_REQUEST['_members_only'] ) ) {
442
+ update_post_meta( $post_id, '_members_only', 'yes' );
443
+ }
444
+
445
+ // set redirect only
446
+ if ( isset( $_REQUEST['_redirect_only'] ) ) {
447
+ update_post_meta( $post_id, '_redirect_only', 'yes' );
448
+ }
449
+
450
+ return $post_id;
451
+ }
452
  }
includes/admin/class-dlm-admin.php CHANGED
@@ -94,6 +94,29 @@ class DLM_Admin {
94
  return $pathdata;
95
  }
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  /**
98
  * init_settings function.
99
  *
@@ -101,6 +124,7 @@ class DLM_Admin {
101
  * @return void
102
  */
103
  private function init_settings() {
 
104
  $this->settings = apply_filters( 'download_monitor_settings',
105
  array(
106
  'general' => array(
@@ -219,9 +243,17 @@ class DLM_Admin {
219
  ),
220
  )
221
  ),
222
- 'access' => array(
223
  __( 'Access', 'download-monitor' ),
224
  array(
 
 
 
 
 
 
 
 
225
  array(
226
  'name' => 'dlm_no_access_error',
227
  'std' => sprintf( __( 'You do not have permission to access this download. %sGo to homepage%s', 'download-monitor' ), '<a href="' . home_url() . '">', '</a>' ),
@@ -363,7 +395,7 @@ class DLM_Admin {
363
  * Print global notices
364
  */
365
  private function print_global_notices() {
366
-
367
  // check for nginx
368
  if ( isset( $_SERVER['SERVER_SOFTWARE'] ) && stristr( $_SERVER['SERVER_SOFTWARE'], 'nginx' ) !== false && 1 != get_option( 'dlm_hide_notice-nginx_rules', 0 ) ) {
369
 
@@ -503,7 +535,7 @@ class DLM_Admin {
503
  </p>
504
  </form>
505
  </div>
506
- <?php
507
  }
508
 
509
  /**
@@ -531,11 +563,11 @@ class DLM_Admin {
531
  href="<?php echo wp_nonce_url( add_query_arg( 'dlm_delete_logs', 'true', admin_url( 'edit.php?post_type=dlm_download&page=download-monitor-logs' ) ), 'delete_logs' ); ?>"
532
  class="add-new-h2"><?php _e( 'Delete Logs', 'download-monitor' ); ?></a></h2><br/>
533
 
534
- <form id="dlm_logs">
535
  <?php $DLM_Logging_List_Table->display() ?>
536
  </form>
537
  </div>
538
- <?php
539
  }
540
 
541
  /**
@@ -673,7 +705,7 @@ class DLM_Admin {
673
  'dlm_download_page_dlm-extensions'
674
  );
675
 
676
- // Check to make sure we're on a WooCommerce admin page
677
  if ( isset( $current_screen->id ) && apply_filters( 'dlm_display_admin_footer_text', in_array( $current_screen->id, $dlm_page_ids ) ) ) {
678
  // Change the footer text
679
  $footer_text = sprintf( __( 'If you like %sDownload Monitor%s please leave us a %s★★★★★%s rating. A huge thank you from us in advance!', 'download-monitor' ), '<strong>', '</strong>', '<a href="https://wordpress.org/support/view/plugin-reviews/download-monitor?filter=5#postform" target="_blank">', '</a>' );
94
  return $pathdata;
95
  }
96
 
97
+ /**
98
+ * Return pages with ID => Page title format
99
+ *
100
+ * @return array
101
+ */
102
+ private function get_pages() {
103
+ // pages
104
+ $pages = array( 0 => __( 'Select Page', 'download-monitor' ) );
105
+
106
+ // get pages from db
107
+ $db_pages = get_pages();
108
+
109
+ // check and loop
110
+ if ( count( $db_pages ) > 0 ) {
111
+ foreach ( $db_pages as $db_page ) {
112
+ $pages[ $db_page->ID ] = $db_page->post_title;
113
+ }
114
+ }
115
+
116
+ // return pages
117
+ return $pages;
118
+ }
119
+
120
  /**
121
  * init_settings function.
122
  *
124
  * @return void
125
  */
126
  private function init_settings() {
127
+
128
  $this->settings = apply_filters( 'download_monitor_settings',
129
  array(
130
  'general' => array(
243
  ),
244
  )
245
  ),
246
+ 'access' => array(
247
  __( 'Access', 'download-monitor' ),
248
  array(
249
+ array(
250
+ 'name' => 'dlm_no_access_page',
251
+ 'std' => '',
252
+ 'label' => __( 'No Access Page', 'download-monitor' ),
253
+ 'desc' => __( "Choose what page is displayed when the user has no access to a file. Don't forget to add the <code>[dlm_no_access]</code> shortcode to the page.", 'download-monitor' ),
254
+ 'type' => 'select',
255
+ 'options' => $this->get_pages()
256
+ ),
257
  array(
258
  'name' => 'dlm_no_access_error',
259
  'std' => sprintf( __( 'You do not have permission to access this download. %sGo to homepage%s', 'download-monitor' ), '<a href="' . home_url() . '">', '</a>' ),
395
  * Print global notices
396
  */
397
  private function print_global_notices() {
398
+
399
  // check for nginx
400
  if ( isset( $_SERVER['SERVER_SOFTWARE'] ) && stristr( $_SERVER['SERVER_SOFTWARE'], 'nginx' ) !== false && 1 != get_option( 'dlm_hide_notice-nginx_rules', 0 ) ) {
401
 
535
  </p>
536
  </form>
537
  </div>
538
+ <?php
539
  }
540
 
541
  /**
563
  href="<?php echo wp_nonce_url( add_query_arg( 'dlm_delete_logs', 'true', admin_url( 'edit.php?post_type=dlm_download&page=download-monitor-logs' ) ), 'delete_logs' ); ?>"
564
  class="add-new-h2"><?php _e( 'Delete Logs', 'download-monitor' ); ?></a></h2><br/>
565
 
566
+ <form id="dlm_logs" method="post">
567
  <?php $DLM_Logging_List_Table->display() ?>
568
  </form>
569
  </div>
570
+ <?php
571
  }
572
 
573
  /**
705
  'dlm_download_page_dlm-extensions'
706
  );
707
 
708
+ // Check to make sure we're on a Download Monitor admin page
709
  if ( isset( $current_screen->id ) && apply_filters( 'dlm_display_admin_footer_text', in_array( $current_screen->id, $dlm_page_ids ) ) ) {
710
  // Change the footer text
711
  $footer_text = sprintf( __( 'If you like %sDownload Monitor%s please leave us a %s★★★★★%s rating. A huge thank you from us in advance!', 'download-monitor' ), '<strong>', '</strong>', '<a href="https://wordpress.org/support/view/plugin-reviews/download-monitor?filter=5#postform" target="_blank">', '</a>' );
includes/admin/class-dlm-logging-list-table.php CHANGED
@@ -14,12 +14,15 @@ class DLM_Logging_List_Table extends WP_List_Table {
14
  /** @var UAParser */
15
  private $uaparser = null;
16
 
 
 
 
17
  /**
18
  * __construct function.
19
  *
20
  * @access public
21
  */
22
- function __construct() {
23
  global $status, $page, $wpdb;
24
 
25
  parent::__construct( array(
@@ -37,6 +40,32 @@ class DLM_Logging_List_Table extends WP_List_Table {
37
  }
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  /**
41
  * column_default function.
42
  *
@@ -47,7 +76,7 @@ class DLM_Logging_List_Table extends WP_List_Table {
47
  *
48
  * @return void
49
  */
50
- function column_default( $log, $column_name ) {
51
  switch ( $column_name ) {
52
  case 'status' :
53
  switch ( $log->download_status ) {
@@ -133,6 +162,7 @@ class DLM_Logging_List_Table extends WP_List_Table {
133
  */
134
  public function get_columns() {
135
  $columns = array(
 
136
  'status' => '',
137
  'download' => __( 'Download', 'download-monitor' ),
138
  'file' => __( 'File', 'download-monitor' ),
@@ -149,10 +179,32 @@ class DLM_Logging_List_Table extends WP_List_Table {
149
  * Generate the table navigation above or below the table
150
  */
151
  public function display_tablenav( $which ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  ?>
153
  <div class="tablenav <?php echo esc_attr( $which ); ?>">
 
 
 
 
 
154
  <?php if ( 'top' == $which ) : ?>
 
155
  <div class="alignleft actions">
 
156
  <select name="filter_status">
157
  <option value=""><?php _e( 'Any status', 'download-monitor' ); ?></option>
158
  <option
@@ -230,9 +282,12 @@ class DLM_Logging_List_Table extends WP_List_Table {
230
  * @access public
231
  * @return void
232
  */
233
- function prepare_items() {
234
  global $wpdb;
235
 
 
 
 
236
  $per_page = absint( $this->logs_per_page );
237
  $current_page = absint( $this->get_pagenum() );
238
  $filter_status = $this->filter_status;
@@ -282,4 +337,42 @@ class DLM_Logging_List_Table extends WP_List_Table {
282
 
283
  $this->uaparser = new UAParser();
284
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
  }
14
  /** @var UAParser */
15
  private $uaparser = null;
16
 
17
+ /** @var bool $display_delete_message */
18
+ private $display_delete_message = false;
19
+
20
  /**
21
  * __construct function.
22
  *
23
  * @access public
24
  */
25
+ public function __construct() {
26
  global $status, $page, $wpdb;
27
 
28
  parent::__construct( array(
40
  }
41
  }
42
 
43
+ /**
44
+ * The checkbox column
45
+ *
46
+ * @param object $item
47
+ *
48
+ * @return string
49
+ */
50
+ public function column_cb( $item ) {
51
+ return sprintf(
52
+ '<input type="checkbox" name="log[]" value="%s" />', $item->ID
53
+ );
54
+ }
55
+
56
+ /**
57
+ * Add bulk actions
58
+ *
59
+ * @return array
60
+ */
61
+ protected function get_bulk_actions() {
62
+ $actions = array(
63
+ 'delete' => __( 'Delete', 'download-monitor' )
64
+ );
65
+
66
+ return $actions;
67
+ }
68
+
69
  /**
70
  * column_default function.
71
  *
76
  *
77
  * @return void
78
  */
79
+ public function column_default( $log, $column_name ) {
80
  switch ( $column_name ) {
81
  case 'status' :
82
  switch ( $log->download_status ) {
162
  */
163
  public function get_columns() {
164
  $columns = array(
165
+ 'cb' => '',
166
  'status' => '',
167
  'download' => __( 'Download', 'download-monitor' ),
168
  'file' => __( 'File', 'download-monitor' ),
179
  * Generate the table navigation above or below the table
180
  */
181
  public function display_tablenav( $which ) {
182
+
183
+ // output nonce
184
+ if ( 'top' == $which ) {
185
+ wp_nonce_field( 'bulk-' . $this->_args['plural'] );
186
+ }
187
+
188
+ // display 'delete' success message
189
+ if ( 'top' == $which && true === $this->display_delete_message ) {
190
+ ?>
191
+ <div id="message" class="updated notice notice-success">
192
+ <p><?php _e( 'Log entries deleted', 'download-monitor' ); ?></p>
193
+ </div>
194
+ <?php
195
+ }
196
+
197
  ?>
198
  <div class="tablenav <?php echo esc_attr( $which ); ?>">
199
+
200
+ <div class="alignleft actions bulkactions">
201
+ <?php $this->bulk_actions( $which ); ?>
202
+ </div>
203
+
204
  <?php if ( 'top' == $which ) : ?>
205
+
206
  <div class="alignleft actions">
207
+
208
  <select name="filter_status">
209
  <option value=""><?php _e( 'Any status', 'download-monitor' ); ?></option>
210
  <option
282
  * @access public
283
  * @return void
284
  */
285
+ public function prepare_items() {
286
  global $wpdb;
287
 
288
+ // process bulk action
289
+ $this->process_bulk_action();
290
+
291
  $per_page = absint( $this->logs_per_page );
292
  $current_page = absint( $this->get_pagenum() );
293
  $filter_status = $this->filter_status;
337
 
338
  $this->uaparser = new UAParser();
339
  }
340
+
341
+ /**
342
+ * Process bulk actions
343
+ */
344
+ public function process_bulk_action() {
345
+
346
+ if ( 'delete' === $this->current_action() ) {
347
+
348
+ // check nonce
349
+ if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'bulk-' . $this->_args['plural'] ) ) {
350
+ wp_die( 'process_bulk_action() nonce check failed' );
351
+ }
352
+
353
+ // check capability
354
+ if ( ! current_user_can( 'dlm_manage_logs' ) ) {
355
+ wp_die( "You're not allowed to delete logs!" );
356
+ }
357
+
358
+ // logging object
359
+ $logging = new DLM_Logging();
360
+
361
+ // check
362
+ if ( count( $_POST['log'] ) > 0 ) {
363
+
364
+ // delete the posted logs
365
+ foreach ( $_POST['log'] as $log_id ) {
366
+ $logging->delete_log( absint( $log_id ) );
367
+ }
368
+
369
+ // display delete message
370
+ $this->display_delete_message = true;
371
+
372
+ }
373
+
374
+ }
375
+
376
+ }
377
+
378
  }
includes/admin/uaparser/resources/regexes.json CHANGED
@@ -512,6 +512,10 @@
512
  "regex": "(Phantom)/V(\\d+)\\.(\\d+)",
513
  "family_replacement": "Phantom Browser"
514
  },
 
 
 
 
515
  {
516
  "regex": "([MS]?IE) (\\d+)\\.(\\d+)",
517
  "family_replacement": "IE"
@@ -564,6 +568,18 @@
564
  "regex": "(XBLWP7)",
565
  "os_replacement": "Windows Phone"
566
  },
 
 
 
 
 
 
 
 
 
 
 
 
567
  {
568
  "regex": "(Windows NT 6\\.1)",
569
  "os_replacement": "Windows 7"
@@ -583,10 +599,6 @@
583
  "regex": "(Windows NT 6\\.2; ARM;)",
584
  "os_replacement": "Windows RT"
585
  },
586
- {
587
- "regex": "(Windows NT 6\\.2)",
588
- "os_replacement": "Windows 8"
589
- },
590
  {
591
  "regex": "(Windows NT 5\\.0)",
592
  "os_replacement": "Windows 2000"
512
  "regex": "(Phantom)/V(\\d+)\\.(\\d+)",
513
  "family_replacement": "Phantom Browser"
514
  },
515
+ {
516
+ "regex": "Trident(.*)rv.(\\d+)\\.(\\d+)",
517
+ "family_replacement": "IE"
518
+ },
519
  {
520
  "regex": "([MS]?IE) (\\d+)\\.(\\d+)",
521
  "family_replacement": "IE"
568
  "regex": "(XBLWP7)",
569
  "os_replacement": "Windows Phone"
570
  },
571
+ {
572
+ "regex": "(Windows NT 6\\.4)",
573
+ "os_replacement": "Windows 10"
574
+ },
575
+ {
576
+ "regex": "(Windows NT 6\\.3)",
577
+ "os_replacement": "Windows 8.1"
578
+ },
579
+ {
580
+ "regex": "(Windows NT 6\\.2)",
581
+ "os_replacement": "Windows 8"
582
+ },
583
  {
584
  "regex": "(Windows NT 6\\.1)",
585
  "os_replacement": "Windows 7"
599
  "regex": "(Windows NT 6\\.2; ARM;)",
600
  "os_replacement": "Windows RT"
601
  },
 
 
 
 
602
  {
603
  "regex": "(Windows NT 5\\.0)",
604
  "os_replacement": "Windows 2000"
includes/class-dlm-download-handler.php CHANGED
@@ -79,7 +79,7 @@ class DLM_Download_Handler {
79
  if ( false !== $can_download ) {
80
 
81
  $visitor_ip = DLM_Utils::get_visitor_ip();
82
- $ip_type = 0;
83
 
84
  if ( filter_var( $visitor_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
85
  $ip_type = 4;
@@ -344,8 +344,33 @@ class DLM_Download_Handler {
344
  wp_redirect( $redirect );
345
  exit;
346
  } else {
347
- // Visitor don't have access to file and there's no redirect so display 'no access' message and die
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
348
  wp_die( wp_kses_post( get_option( 'dlm_no_access_error', '' ) ), __( 'Download Error', 'download-monitor' ), array( 'response' => 200 ) );
 
349
  }
350
 
351
  exit;
@@ -550,8 +575,8 @@ class DLM_Download_Handler {
550
  *
551
  * @access public
552
  *
553
- * @param string $file
554
- * @param boolean $retbytes return bytes of file
555
  * @param boolean $range if HTTP RANGE to seek
556
  *
557
  * @return mixed
79
  if ( false !== $can_download ) {
80
 
81
  $visitor_ip = DLM_Utils::get_visitor_ip();
82
+ $ip_type = 0;
83
 
84
  if ( filter_var( $visitor_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) {
85
  $ip_type = 4;
344
  wp_redirect( $redirect );
345
  exit;
346
  } else {
347
+
348
+ // get 'no access' page id
349
+ $no_access_page_id = get_option( 'dlm_no_access_page', 0 );
350
+
351
+ // check if a no access page is set
352
+ if ( $no_access_page_id > 0 ) {
353
+
354
+ // get permalink of no access page
355
+ $no_access_permalink = get_permalink( $no_access_page_id );
356
+
357
+ // check if we can find a permalink
358
+ if ( false !== $no_access_permalink ) {
359
+
360
+ // append download id to no access URL
361
+ $no_access_permalink = untrailingslashit( $no_access_permalink ) . '/download-id/' . $download->id . '/';
362
+
363
+ // redirect to no access page
364
+ wp_redirect( $no_access_permalink );
365
+
366
+ exit; // out
367
+ }
368
+
369
+ }
370
+
371
+ // if we get to this point, we have no proper 'no access' page. Fallback to default wp_die
372
  wp_die( wp_kses_post( get_option( 'dlm_no_access_error', '' ) ), __( 'Download Error', 'download-monitor' ), array( 'response' => 200 ) );
373
+
374
  }
375
 
376
  exit;
575
  *
576
  * @access public
577
  *
578
+ * @param string $file
579
+ * @param boolean $retbytes return bytes of file
580
  * @param boolean $range if HTTP RANGE to seek
581
  *
582
  * @return mixed
includes/class-dlm-download-no-access-page-endpoint.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class DLM_Download_No_Access_Page_Endpoint {
4
+
5
+ private $endpoint = 'download-id';
6
+
7
+ /**
8
+ * Setup no access page
9
+ */
10
+ public function setup() {
11
+ // add query var and enpoint
12
+ add_filter( 'query_vars', array( $this, 'add_query_vars' ), 0 );
13
+ add_action( 'init', array( $this, 'add_endpoint' ), 0 );
14
+ }
15
+
16
+ /**
17
+ * add_query_vars function.
18
+ *
19
+ * @access public
20
+ *
21
+ * @param array $vars
22
+ *
23
+ * @return array
24
+ */
25
+ public function add_query_vars( $vars ) {
26
+ $vars[] = $this->endpoint;
27
+
28
+ return $vars;
29
+ }
30
+
31
+ /**
32
+ * add_endpoint function.
33
+ *
34
+ * @access public
35
+ * @return void
36
+ */
37
+ public function add_endpoint() {
38
+ add_rewrite_endpoint( $this->endpoint, EP_ALL );
39
+ }
40
+
41
+ }
includes/class-dlm-file-manager.php CHANGED
@@ -70,7 +70,7 @@ class DLM_File_Manager {
70
  $file_path = trim( str_replace( $wp_uploads_url, $wp_uploads_dir, $file_path ) );
71
  $file_path = realpath( $file_path );
72
 
73
- } elseif ( ( is_multisite() && ( strpos( $file_path, network_site_url( '/', 'http' ) ) !== false ) || ( strpos( $file_path, network_site_url( '/', 'https' ) ) !== false ) ) ) {
74
 
75
  /** This is a local file outside of wp-content so figure out the path */
76
  $remote_file = false;
70
  $file_path = trim( str_replace( $wp_uploads_url, $wp_uploads_dir, $file_path ) );
71
  $file_path = realpath( $file_path );
72
 
73
+ } elseif ( is_multisite() && ( ( strpos( $file_path, network_site_url( '/', 'http' ) ) !== false ) || ( strpos( $file_path, network_site_url( '/', 'https' ) ) !== false ) ) ) {
74
 
75
  /** This is a local file outside of wp-content so figure out the path */
76
  $remote_file = false;
includes/class-dlm-installer.php CHANGED
@@ -41,12 +41,26 @@ class DLM_Installer {
41
  update_option( 'dlm_no_access_error', sprintf( __( 'You do not have permission to access this download. %sGo to homepage%s', 'download-monitor' ), '<a href="' . home_url() . '">', '</a>' ) );
42
  }
43
 
 
 
 
 
 
 
 
 
44
  // Set the current version
45
  require_once( 'class-dlm-constants.php' );
46
  update_option( DLM_Constants::OPTION_CURRENT_VERSION, DLM_VERSION );
47
 
 
 
 
 
 
48
  }
49
 
 
50
  /**
51
  * Init user roles
52
  *
@@ -142,4 +156,34 @@ class DLM_Installer {
142
  }
143
  }
144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  }
41
  update_option( 'dlm_no_access_error', sprintf( __( 'You do not have permission to access this download. %sGo to homepage%s', 'download-monitor' ), '<a href="' . home_url() . '">', '</a>' ) );
42
  }
43
 
44
+ // create no access page
45
+ $this->create_no_access_page();
46
+
47
+ // setup no access page endpoints
48
+ require_once( 'class-dlm-download-no-access-page-endpoint.php' );
49
+ $no_access_page_endpoint = new DLM_Download_No_Access_Page_Endpoint();
50
+ $no_access_page_endpoint->setup();
51
+
52
  // Set the current version
53
  require_once( 'class-dlm-constants.php' );
54
  update_option( DLM_Constants::OPTION_CURRENT_VERSION, DLM_VERSION );
55
 
56
+ // add rewrite rules
57
+ add_rewrite_endpoint( 'download-id', EP_ALL );
58
+
59
+ // flush rewrite rules
60
+ flush_rewrite_rules();
61
  }
62
 
63
+
64
  /**
65
  * Init user roles
66
  *
156
  }
157
  }
158
 
159
+ /**
160
+ * Create no access page
161
+ */
162
+ public function create_no_access_page() {
163
+
164
+ // create cars listing page if not exists
165
+ $listings_slug = sanitize_title( __( 'No Access', 'download-monitor' ) );
166
+ $listings_page = get_page_by_path( $listings_slug );
167
+
168
+ // check if listings page exists
169
+ if ( null == $listings_page ) {
170
+
171
+ // create page
172
+ $page_id = wp_insert_post( array(
173
+ 'post_type' => 'page',
174
+ 'post_title' => __( 'No Access', 'download-monitor' ),
175
+ 'post_content' => '[dlm_no_access]',
176
+ 'post_status' => 'publish'
177
+ ) );
178
+
179
+ if ( ! is_wp_error( $page_id ) ) {
180
+ // set page id as dlm_no_access_page
181
+ update_option( 'dlm_no_access_page', absint( $page_id ) );
182
+ }
183
+
184
+
185
+ }
186
+
187
+ }
188
+
189
  }
includes/class-dlm-logging.php CHANGED
@@ -15,7 +15,7 @@ class DLM_Logging {
15
  * @return bool
16
  */
17
  public function is_logging_enabled() {
18
- return (1 == get_option( 'dlm_enable_logging', 0 ));
19
  }
20
 
21
  /**
@@ -59,5 +59,18 @@ class DLM_Logging {
59
  return $wpdb->insert_id;
60
  }
61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  }
63
 
15
  * @return bool
16
  */
17
  public function is_logging_enabled() {
18
+ return ( 1 == get_option( 'dlm_enable_logging', 0 ) );
19
  }
20
 
21
  /**
59
  return $wpdb->insert_id;
60
  }
61
 
62
+ /**
63
+ * Delete a log entry
64
+ *
65
+ * @param $log_id
66
+ *
67
+ * @return bool
68
+ */
69
+ public function delete_log( $log_id ) {
70
+ global $wpdb;
71
+
72
+ return ( false !== $wpdb->delete( $wpdb->download_log, array( 'ID' => $log_id ), array( '%d' ) ) );
73
+ }
74
+
75
  }
76
 
includes/class-dlm-shortcodes.php CHANGED
@@ -18,6 +18,7 @@ class DLM_Shortcodes {
18
  add_shortcode( 'download', array( $this, 'download' ) );
19
  add_shortcode( 'download_data', array( $this, 'download_data' ) );
20
  add_shortcode( 'downloads', array( $this, 'downloads' ) );
 
21
  }
22
 
23
  /**
@@ -426,4 +427,45 @@ class DLM_Shortcodes {
426
 
427
  return ob_get_clean();
428
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  }
18
  add_shortcode( 'download', array( $this, 'download' ) );
19
  add_shortcode( 'download_data', array( $this, 'download_data' ) );
20
  add_shortcode( 'downloads', array( $this, 'downloads' ) );
21
+ add_shortcode( 'dlm_no_access', array( $this, 'no_access_page' ) );
22
  }
23
 
24
  /**
427
 
428
  return ob_get_clean();
429
  }
430
+
431
+ /**
432
+ * The dlm_no_access shortcode callback
433
+ *
434
+ * @param array $atts
435
+ *
436
+ * @return string
437
+ */
438
+ public function no_access_page( $atts ) {
439
+ global $wp;
440
+
441
+ // atts
442
+ $atts = shortcode_atts( array(
443
+ 'show_message' => 'true',
444
+ ), $atts );
445
+
446
+ // start buffer
447
+ ob_start();
448
+
449
+ // show_message must be a bool
450
+ $atts['show_message'] = ( 'true' === $atts['show_message'] );
451
+
452
+ // return empty string if download-id is not set
453
+ if ( ! isset( $wp->query_vars['download-id'] ) ) {
454
+ return '';
455
+ }
456
+
457
+ // template handler
458
+ $template_handler = new DLM_Template_Handler();
459
+
460
+ // load no access template
461
+ $template_handler->get_template_part( 'no-access', '', '', array(
462
+ 'download' => new DLM_Download( $wp->query_vars['download-id'] ),
463
+ 'no_access_message' => ( ( $atts['show_message'] ) ? wp_kses_post( get_option( 'dlm_no_access_error', '' ) ) : '' )
464
+ ) );
465
+
466
+ // set new content
467
+ $content = ob_get_clean();
468
+
469
+ return $content;
470
+ }
471
  }
includes/class-dlm-upgrade-manager.php CHANGED
@@ -6,6 +6,13 @@ if ( ! defined( 'ABSPATH' ) ) {
6
 
7
  class DLM_Upgrade_Manager {
8
 
 
 
 
 
 
 
 
9
  /**
10
  * Check if there's a plugin update
11
  */
@@ -49,6 +56,21 @@ class DLM_Upgrade_Manager {
49
 
50
  }
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  }
53
 
54
  /**
6
 
7
  class DLM_Upgrade_Manager {
8
 
9
+ /**
10
+ * Setup to run updater on wp_loaded
11
+ */
12
+ public function setup() {
13
+ add_action( 'wp_loaded', array( $this, 'check' ) );
14
+ }
15
+
16
  /**
17
  * Check if there's a plugin update
18
  */
56
 
57
  }
58
 
59
+ // Upgrade to version 1.9.0
60
+ if ( version_compare( $current_version, '1.9.0', '<' ) ) {
61
+
62
+ // Adding new capabilities
63
+ $installer = new DLM_Installer();
64
+ $installer->create_no_access_page();
65
+
66
+ // setup no access page endpoints
67
+ $no_access_page_endpoint = new DLM_Download_No_Access_Page_Endpoint();
68
+ $no_access_page_endpoint->setup();
69
+
70
+ // flush rules after page creation
71
+ flush_rewrite_rules();
72
+ }
73
+
74
  }
75
 
76
  /**
includes/class-wp-dlm.php CHANGED
@@ -98,7 +98,7 @@ class WP_DLM {
98
 
99
  // Upgrade Manager
100
  $upgrade_manager = new DLM_Upgrade_Manager();
101
- $upgrade_manager->check();
102
  }
103
 
104
  // Setup AJAX handler if doing AJAX
@@ -116,6 +116,10 @@ class WP_DLM {
116
  $download_handler = new DLM_Download_Handler();
117
  $download_handler->setup();
118
 
 
 
 
 
119
  // Setup shortcodes
120
  $dlm_shortcodes = new DLM_Shortcodes();
121
  $dlm_shortcodes->setup();
98
 
99
  // Upgrade Manager
100
  $upgrade_manager = new DLM_Upgrade_Manager();
101
+ $upgrade_manager->setup();
102
  }
103
 
104
  // Setup AJAX handler if doing AJAX
116
  $download_handler = new DLM_Download_Handler();
117
  $download_handler->setup();
118
 
119
+ // setup no access page endpoints
120
+ $no_access_page_endpoint = new DLM_Download_No_Access_Page_Endpoint();
121
+ $no_access_page_endpoint->setup();
122
+
123
  // Setup shortcodes
124
  $dlm_shortcodes = new DLM_Shortcodes();
125
  $dlm_shortcodes->setup();
includes/product/class-dlm-product.php CHANGED
@@ -132,7 +132,7 @@ class DLM_Product {
132
 
133
  // Check request
134
  if ( is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) != 200 ) {
135
- throw new Exception( 'Connection failed to the Licence Key API server. Try again later.' );
136
  }
137
 
138
  // Get activation result
@@ -149,7 +149,7 @@ class DLM_Product {
149
  return array( 'result' => 'success', 'message' => __( 'License successfully activated.', 'download-monitor' ) );
150
 
151
  } elseif ( $activate_results === false ) {
152
- throw new Exception( 'Connection failed to the Licence Key API server. Try again later.' );
153
  } elseif ( isset( $activate_results['error_code'] ) ) {
154
  throw new Exception( $activate_results['error'] );
155
  }
@@ -191,7 +191,7 @@ class DLM_Product {
191
 
192
  // Check request
193
  if ( is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) != 200 ) {
194
- throw new Exception( 'Connection failed to the Licence Key API server. Try again later.' );
195
  }
196
 
197
  // Get result
132
 
133
  // Check request
134
  if ( is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) != 200 ) {
135
+ throw new Exception( 'Connection failed to the License Key API server. Try again later.' );
136
  }
137
 
138
  // Get activation result
149
  return array( 'result' => 'success', 'message' => __( 'License successfully activated.', 'download-monitor' ) );
150
 
151
  } elseif ( $activate_results === false ) {
152
+ throw new Exception( 'Connection failed to the License Key API server. Try again later.' );
153
  } elseif ( isset( $activate_results['error_code'] ) ) {
154
  throw new Exception( $activate_results['error'] );
155
  }
191
 
192
  // Check request
193
  if ( is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) != 200 ) {
194
+ throw new Exception( 'Connection failed to the License Key API server. Try again later.' );
195
  }
196
 
197
  // Get result
installer-functions.php CHANGED
@@ -76,8 +76,7 @@ function __download_monitor_mu_new_blog( $blog_id, $user_id, $domain, $path, $si
76
  // run installer on blog
77
  $installer->install();
78
 
79
-
80
- // restore current bloh
81
  restore_current_blog();
82
  }
83
  }
76
  // run installer on blog
77
  $installer->install();
78
 
79
+ // restore current blog
 
80
  restore_current_blog();
81
  }
82
  }
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.barrykooij.com/donate/
4
  Tags: download, downloads, monitor, hits, download monitor, tracking, admin, count, counter, files, versions, download count, logging, AJAX, digital, documents, download category, download manager, download template, downloadmanager, file manager, file tree, grid, hits, ip-address, manager, media, monitor, password, protect downloads, tracker
5
  Requires at least: 3.8
6
  Tested up to: 4.3
7
- Stable tag: 1.8.1
8
  License: GPLv3
9
 
10
  Download Monitor is a plugin for uploading and managing downloads, tracking downloads, and displaying links.
@@ -107,6 +107,19 @@ More documentation can be found in our [Knowledge Base](https://www.download-mon
107
 
108
  == Changelog ==
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  = 1.8.1: August 21, 2015 =
111
  * Tweak: Small tweak to make download count fit better in box template.
112
  * Tweak: Fixed a zero file size bug.
4
  Tags: download, downloads, monitor, hits, download monitor, tracking, admin, count, counter, files, versions, download count, logging, AJAX, digital, documents, download category, download manager, download template, downloadmanager, file manager, file tree, grid, hits, ip-address, manager, media, monitor, password, protect downloads, tracker
5
  Requires at least: 3.8
6
  Tested up to: 4.3
7
+ Stable tag: 1.9.0
8
  License: GPLv3
9
 
10
  Download Monitor is a plugin for uploading and managing downloads, tracking downloads, and displaying links.
107
 
108
  == Changelog ==
109
 
110
+ = 1.9.0: September 15, 2015 =
111
+ * Feature: We added a separate 'No Access' page that includes the following features:
112
+ * No Access Page : Added [dlm_no_access] shortcode that displays the no access content.
113
+ * No Access Page : Added new option in Access settings tab to set No Access Page.
114
+ * No Access Page : Added new template file for no access page.
115
+ * No Access Page : We now redirect to set No Access page (if set) when user has no access to download.
116
+ * Feature: Added ability to remove log entries.
117
+ * Feature: Added browser detection for IE 11 and up.
118
+ * Feature: Added OS detection for Windows 8.1
119
+ * Feature: Added OS detection for Windows 10
120
+ * Feature: Added Featured download, Members only and Redirect to file to bulk edit options.
121
+ * Feature: Added Featured download, Members only and Redirect to file to quick edit options.
122
+
123
  = 1.8.1: August 21, 2015 =
124
  * Tweak: Small tweak to make download count fit better in box template.
125
  * Tweak: Fixed a zero file size bug.
templates/no-access.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Download No Access
4
+ */
5
+
6
+ if ( ! defined( 'ABSPATH' ) ) {
7
+ exit;
8
+ } // Exit if accessed directly
9
+ ?>
10
+
11
+ <?php do_action( 'dlm_no_access_before_message', $download ); ?>
12
+
13
+ <?php if ( ! empty( $no_access_message ) ) : ?>
14
+ <p><?php echo $no_access_message; ?></p>
15
+ <?php endif; ?>
16
+
17
+ <?php do_action( 'dlm_no_access_after_message', $download ); ?>