Plugin Directory

Changeset 3224058


Ignore:
Timestamp:
01/17/2025 09:25:54 AM (12 months ago)
Author:
mdjm
Message:

Update to 1.7.5.6

Location:
mobile-dj-manager/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • mobile-dj-manager/trunk/assets/css/mdjm-admin.css

    r2810426 r3224058  
    696696.mdjm-extension-wrapper {
    697697    overflow: hidden;
     698}
     699
     700.mdjm-extension-header {
     701    margin: 0 15px;
     702    background: #FFF;
     703    padding: 12px 0;
     704    border: 1px solid #000;
     705    border-radius: 4px;
     706    text-align: center;
     707    column-gap: 10px;
    698708}
    699709
  • mobile-dj-manager/trunk/assets/css/mdjm-admin.min.css

    r3001907 r3224058  
    634634    overflow: hidden
    635635}
     636.mdjm-extension-header {
     637    margin: 0 15px;
     638    background: #FFF;
     639    padding: 24px 0;
     640    border: 1px solid #000;
     641    border-radius: 10px;
     642    text-align: center;
     643    width: 100%;
     644    font-weight: 700;
     645    font-size: 24px;
     646}
     647
     648.mdjm-extension-blurb{
     649    margin: 0 15px;
     650    padding: 15px 0;
     651    font-size: 16px;
     652}
     653.mdjm-extensions-page{
     654    max-width: 100%;
     655    margin: 25px 40px 0 0;
     656}
     657.mdjm-extension-container{
     658    display: grid;
     659    justify-content: center;
     660    grid-template-columns: repeat(4, 1fr);
     661    gap: 0px;
     662    width: 90%;
     663    margin: 0 auto;
     664    column-gap:20px;
     665}
     666.mdjm-bundle-container{
     667    display: grid;
     668    justify-content: center;
     669    grid-template-columns: repeat(4, 1fr);
     670    width: 90%;
     671    margin: 0 auto;
     672    column-gap:20px;
     673}
     674.mdjm-extension-grid{
     675    background-color: #fff;
     676    border: 1px solid #ddd;
     677    height: auto;
     678    box-shadow: 1px 1px 3px 1px #ddd;
     679}
     680.mdjm-extension-name{
     681    font-size: 20px;
     682    font-weight: bold;
     683    text-align: center;
     684    padding: 15px 0;
     685    border-bottom: 1px solid #ddd;
     686    color: #000;
     687}
     688.mdjm-extension-snippet{
     689    text-align: left;
     690    padding: 10px 15px;
     691    font-size: 16px;
     692}
     693.mdjm-extension-features{
     694    text-align: center;
     695    font-weight: bold;
     696    font-size: 16px;
     697    margin-top:10px;
     698    text-decoration: underline;
     699}
     700.mdjm-extension-features-list {
     701    list-style: none;
     702    padding: 0px 15px;
     703    color: #000;
     704    font-size: 16px;
     705}
     706
     707.mdjm-extension-features-list li {
     708    position: relative;
     709    padding-left: 25px; /* Adds space for the icon */
     710}
     711
     712.mdjm-extension-features-list li::before {
     713    content: '\f00c';
     714    font-family: 'Font Awesome 5 Free';
     715    font-weight: 900;
     716    position: absolute;
     717    left: 0;
     718    top: 0;
     719    color: #000;
     720}
     721
     722.mdjm-extension-name-section{
     723    background-color: #eee;
     724}
     725.mdjm-extension-button-placeholder {
     726    width: 100%;
     727    margin: 0 auto;
     728    padding: 10px 0;
     729    display: block;
     730    justify-content: center;
     731    align-items: center;
     732}
     733.mdjm-extension-price {
     734    display: block; /* Ensures this element takes up a full line */
     735    margin-bottom: 30px; /* Adds space below the price */
     736    font-size: 36px; /* Adjust font size as needed */
     737    font-weight: bold; /* Optional: Make the price bold */
     738    text-align:center;
     739}
     740
     741.mdjm-extension-button {
     742    display: block; /* Ensures the button container takes up a full line */
     743    text-align: center; /* Optional: Center the button horizontally */
     744}
     745
     746
     747.mdjm-button-secondary {
     748    color: #555d66;
     749    background: #f6f7f7;
     750    border-color: #ccc;
     751    box-shadow: 0 1px 0 #ccc;
     752    text-decoration: none;
     753    text-shadow: 0 1px 0 #fff;
     754    padding: 6px 12px;
     755    border-radius: 3px;
     756    font-size: 13px;
     757    font-style:italic;
     758}
     759
    636760.col {
    637761    background: #eee;
  • mobile-dj-manager/trunk/includes/admin/extensions.php

    r3001907 r3224058  
    2424function mdjm_extensions_page() {
    2525    setlocale( LC_MONETARY, get_locale() );
    26     $extensions     = mdjm_get_extensions();
    27     $tags           = '<a><em><strong><blockquote><ul><ol><li><p>';
    28     $length         = 55;
    29     $extensions_url = esc_url(
    30         add_query_arg(
    31             array(
    32                 'utm_source'   => 'plugin-addons-page',
    33                 'utm_medium'   => 'plugin',
    34                 'utm_campaign' => 'MDJM_Addons_Page',
    35                 'utm_content'  => 'All Addons',
    36             ),
    37             'https://mdjm.co.uk/extensions/'
    38         )
    39     );
    40 
    41     $slug_corrections = array(
    42         'ratings-and-satisfaction' => 'ratings-satisfaction',
    43         'easy-digital-downloads'   => 'edd',
    44         'pdf-export'               => 'to-pdf',
    45     );
     26    $extension_url = "https://www.mdjm.co.uk/downloads"
    4627
    4728    ?>
    48     <div class="wrap about-wrap mdjm-about-wrapp">
    49         <h1>
    50             <?php esc_html_e( 'Extensions for Mobile DJ Manager', 'mobile-dj-manager' ); ?>
    51         </h1>
    52         <div>
    53             <p><a href="<?php echo esc_url( $extensions_url ); ?>" class="button-primary" target="_blank"><?php esc_html_e( 'Browse All Extensions', 'mobile-dj-manager' ); ?></a></p>
    54             <p><?php esc_html_e( 'These extensions', 'mobile-dj-manager' ); ?> <em><strong><?php esc_html_e( 'add even more functionality', 'mobile-dj-manager' ); ?></em></strong> <?php esc_html_e( 'to your Mobile DJ Manager solution.', 'mobile-dj-manager' ); ?></p>
     29    <div class="mdjm-extensions-page">
     30        <section class="mdjm-extension-header">MDJM Extensions</section>
     31                <div class="mdjm-extension-blurb">
     32            We have four extensions so far to further enhance your site, Stripe Payment Add On, Dynamic Contact Forms Extension, a Google Calendar Extension and a brand new SMS Messaging Service extension. We are working on a few other add-ons as well so please join our <a href="https://www.facebook.com/groups/445488710162671">Facebook Users Group</a> to keep up to date.<br /><br />All prices shown are per year. Monthly options are available on our website.
    5533        </div>
    56 
    57         <div class="mdjm-extension-wrapper grid2">
    58             <?php
    59             foreach ( $extensions as $key => $extension ) :
    60                 $the_excerpt = '';
    61                 $slug        = $extension->info->slug;
    62                 $link        = 'https://mdjm.co.uk/extensions/' . $slug . '/';
    63                 $price       = false;
    64                 $link        = esc_url(
    65                     add_query_arg(
    66                         array(
    67                             'utm_source'   => 'plugin-addons-page',
    68                             'utm_medium'   => 'plugin',
    69                             'utm_campaign' => 'MDJM_Addons_Page',
    70                             'utm_content'  => $extension->info->title,
    71                         ),
    72                         $link
    73                     )
    74                 );
    75 
    76                 if ( 'payment-gateways' == $slug ) {
    77                     continue;
    78                 }
    79 
    80                 if ( array_key_exists( $slug, $slug_corrections ) ) {
    81                     $slug = $slug_corrections[ $slug ];
    82                 }
    83 
    84                 if ( isset( $extension->pricing->amount ) ) {
    85                     if ( '0.00' == $extension->pricing->amount ) {
    86                         $price = false;
    87                     } else {
    88                         $price = '&pound;' . number_format( $extension->pricing->amount, 2 );
    89                     }
    90                 } else {
    91                     if ( isset( $extension->pricing->singlesite ) ) {
    92                         $price = '&pound;' . number_format( $extension->pricing->singlesite, 2 );
    93                     }
    94                 }
    95 
    96                 if ( ! empty( $extension->info->excerpt ) ) {
    97                     $the_excerpt = $extension->info->excerpt;
    98                 }
    99 
    100                 $the_excerpt   = strip_shortcodes( wp_strip_all_tags( wp_unslash( $the_excerpt ), $tags ) );
    101                 $the_excerpt   = preg_split( '/\b/', $the_excerpt, $length * 2 + 1 );
    102                 $excerpt_waste = array_pop( $the_excerpt );
    103                 $the_excerpt   = implode( $the_excerpt );
    104                 ?>
    105 
    106                 <article class="col">
    107                     <div class="mdjm-extension-item">
    108                         <div class="mdjm-extension-item-img">
    109                             <a href="<?php echo esc_url( $link ); ?>" target="_blank"><img src="<?php echo esc_url( $extension->info->thumbnail ); ?>" /></a>
    110                         </div>
    111                         <div class="mdjm-extension-item-desc">
    112                             <p class="mdjm-extension-item-heading"><?php echo esc_html( $extension->info->title ); ?></p>
    113                             <div class="mdjm-extension-item-excerpt">
    114                                 <p><?php echo esc_html( $the_excerpt ); ?></p>
    115                             </div>
    116                             <div class="mdjm-extension-buy-now">
    117                                 <?php if ( ! is_plugin_active( 'mdjm-' . $slug . '/' . 'mdjm-' . $slug . '.php' ) ) : ?>
    118                                     <?php if ( ! $price ) : ?>
    119                                         <?php
    120                                         $link = add_query_arg(
    121                                             array(
    122                                                 's'    => 'mdjm-to-pdf',
    123                                                 'tab'  => 'search',
    124                                                 'type' => 'term',
    125                                             ),
    126                                             admin_url( 'plugin-install.php' )
    127                                         );
    128                                         ?>
    129                                         <a href="<?php echo esc_url( $link ); ?>" class="button-primary"><?php esc_html_e( 'Download Now for Free', 'mobile-dj-manager' ); ?></a>
    130                                     <?php else : ?>
    131                                         <a href="<?php echo esc_url( $link ); ?>" class="button-primary" target="_blank"><?php printf( esc_html__( 'Buy Now from %s', 'mobile-dj-manager' ), esc_html( $price ) ); ?></a>
    132                                     <?php endif; ?>
    133                                 <?php else : ?>
    134                                     <p class="button-primary"><?php esc_html_e( 'Already Installed', 'mobile-dj-manager' ); ?></p>
    135                                 <?php endif; ?>
    136                             </div>
    137                         </div>
    138                     </div>
    139                 </article>
    140             <?php endforeach; ?>
     34        <h2 style="text-decoration: underline">Single Extensions</h2>
     35        <div class="mdjm-extension-container">
     36            <div class="mdjm-extension-grid">
     37                <div class="mdjm-extension-name-section">
     38                    <div class="mdjm-extension-name">Dynamic Contact Forms</div>
     39                </div>
     40
     41                <div class="mdjm-extension-snippet">
     42                    The Dynamic Contact Forms add-on streamlines your business by enabling quick, professional responses to enquiries with accurate, competitive quotes. It captures essential client information and even lets you track when a quote has been read.
     43                </div>
     44
     45                <div class="mdjm-extension-features">Main Features:</div>
     46
     47                <ul class="mdjm-extension-features-list">
     48                    <li>Create unlimited contact forms displayed via shortcode or widget.</li>
     49                    <li>Automatically create event enquiries and client accounts on form submission.</li>
     50                    <li>Auto-respond to clients with customizable email templates.</li>
     51                    <li>Support diverse field types (e.g., text, drop-downs, email, phone, date pickers, etc.).</li>
     52                    <li>Allow users to request event packages and add-ons, with required fields validation.</li>
     53                    <li>Map form fields to Client and Event fields in the MDJM application.</li>
     54                    <li>Customize forms with drag-and-drop reordering, CSS classes, and submission actions.</li>
     55                </ul>
     56
     57                <div class="mdjm-extension-button-placeholder">
     58                    <?php
     59                    if ( class_exists( 'MDJM_Dynamic_ContactForms' ) ) {
     60                        ?>
     61                    <div class="mdjm-extension-button">
     62                        <a class="mdjm-button-secondary">You already have this extension</a>
     63                    </div>
     64                        <?php
     65                    } else {
     66                        ?>
     67                    <div class="mdjm-extension-price">£30</div>
     68                    <div class="mdjm-extension-button">
     69                        <a class="button-primary" href="<?php echo $extension_url?>/mdjm-dynamic-contact-forms">Buy now</a>
     70                    </div>
     71                        <?php
     72                    };
     73                    ?>
     74                </div>
     75            </div>
     76           
     77            <!-- Second column -->
     78            <div class="mdjm-extension-grid">
     79                <div class="mdjm-extension-name-section">
     80                    <div class="mdjm-extension-name">Stripe Payment Gateway</div>
     81                </div>
     82
     83                <div class="mdjm-extension-snippet">
     84                    The extension allows your clients to pay securely for their event. Every type of payment can be collected whether it’s a deposit or the remainder balance. Clients can even choose how much they want to pay as well.
     85                </div>
     86
     87                <div class="mdjm-extension-features">Main Features:</div>
     88
     89                <ul class="mdjm-extension-features-list">
     90                    <li>Inbound payment and outbound processing fees are logged</li>
     91                    <li>Events are updated accordingly</li>
     92                    <li>Configure custom emails to be sent once a payment has been made</li>
     93                    <li>License cost includes 1 year of support and updates from the date of purchase</li>
     94                    <li>Stripe is only available in certain countries. We cannot be held responsible if you purchase the add-on and it is not supported in your country.</li>
     95                </ul>
     96
     97                <div class="mdjm-extension-button-placeholder">
     98                    <?php
     99                    if ( class_exists( 'MDJM_Stripe_Gateway' ) ) {
     100                        ?>
     101                    <div class="mdjm-extension-button">
     102                        <a class="mdjm-button-secondary">You already have this extension</a>
     103                    </div>
     104                        <?php
     105                    } else {
     106                        ?>
     107                    <div class="mdjm-extension-price">£30</div>
     108                    <div class="mdjm-extension-button">
     109                        <a class="button-primary"  href="<?php echo $extension_url?>/mdjm-stripe-payment-gateway/">Buy now</a>
     110                    </div>
     111                        <?php
     112                    };
     113                    ?>
     114                </div>
     115            </div>
     116           
     117            <!-- Third Column -->
     118            <div class="mdjm-extension-grid">
     119                <div class="mdjm-extension-name-section">
     120                    <div class="mdjm-extension-name">SMS Messaging</div>
     121                </div>
     122
     123                <div class="mdjm-extension-snippet">
     124                    With this extension, you can send SMS Messages to your clients straight from your website. There are limitless templates you can have and each time you send an SMS, it logs it to the Communication History tab on your event system too.
     125                </div>
     126
     127                <div class="mdjm-extension-features">Main Features:</div>
     128
     129                <ul class="mdjm-extension-features-list">
     130                    <li>Sends SMS messages to your clients</li>
     131                    <li>Logs each message including the date and time it was sent and who sent it</li>
     132                    <li>Allows the use of content tags so you can really personalise each message</li>
     133                    <li>License is valid for 1 year and comes with support and updates</li>
     134                    <li>Twilio is only available in certain countries. We cannot be held responsible if you purchase the add-on and it is not supported in your country.</li>
     135                    <li>We do not take any commission from the sale of SMS Credits purchased through Twilio</li>
     136                </ul>
     137
     138                <div class="mdjm-extension-button-placeholder">
     139                    <?php
     140                    if ( class_exists( 'MDJM_SMS_Sender' ) ) {
     141                        ?>
     142                    <div class="mdjm-extension-button">
     143                        <a class="mdjm-button-secondary">You already have this extension</a>
     144                    </div>
     145                        <?php
     146                    } else {
     147                        ?>
     148                    <div class="mdjm-extension-price">£20</div>
     149                    <div class="mdjm-extension-button">
     150                        <a class="button-primary"  href="<?php echo $extension_url?>/mdjm-sms-sender">Buy now</a>
     151                    </div>
     152                        <?php
     153                    };
     154                    ?>
     155                </div>
     156            </div>
     157           
     158            <!-- Fourth Column -->
     159            <div class="mdjm-extension-grid">
     160                <div class="mdjm-extension-name-section">
     161                    <div class="mdjm-extension-name">Spotify Playlist Converter</div>
     162                </div>
     163
     164                <div class="mdjm-extension-snippet">
     165                    This extension will allow your clients to insert a public playlist into their event and it converts the details into the MDJM Playlist table. Mobile DJ Manager has secure APIs set up linked to Spotify that will process the playlist, verify it and return the playlist details into the MDJM Playlist Table for that event. It will even skip the duplicates found on the playlist (this will be for new events from the moment you install the Extension).
     166                </div>
     167
     168                <div class="mdjm-extension-features">Main Features:</div>
     169
     170                <ul class="mdjm-extension-features-list">
     171                    <li>Playlist detail transformation.</li>
     172                    <li>Events are updated accordingly</li>
     173                    <li>Checks the Database against the playlist and skips any duplicates</li>
     174                    <li>License cost includes 1 year of support and updates from the date of purchase</li>
     175                    <li>The playlist needs to be an open playlist</li>
     176                </ul>
     177
     178                <div class="mdjm-extension-button-placeholder">
     179                    <?php
     180                    if ( class_exists( 'MDJM_SP_Converter' ) ) {
     181                        ?>
     182                    <div class="mdjm-extension-button">
     183                        <a class="mdjm-button-secondary">You already have this extension</a>
     184                    </div>
     185                        <?php
     186                    } else {
     187                        ?>
     188                    <div class="mdjm-extension-price">£15</div>
     189                    <div class="mdjm-extension-button">
     190                        <a class="button-primary" href="<?php echo $extension_url?>/mdjm-extension-spotify-playlist-converter/">Buy now</a>
     191                    </div>
     192                        <?php
     193                    };
     194                    ?>
     195                </div>
     196            </div>
     197        </div>
     198        <h2 style="text-decoration: underline">Bundles</h2>
     199        <div class="mdjm-extension-container">
     200            <div class="mdjm-extension-grid">
     201                <div class="mdjm-extension-name-section">
     202                    <div class="mdjm-extension-name">Starter Bundle</div>
     203                </div>
     204
     205                <div class="mdjm-extension-snippet">
     206                    Our Starter Bundle is perfect for those that want to take payments and allow clients to fill out a contact form to create an enquiry.
     207                </div>
     208
     209                <div class="mdjm-extension-features">Main Features:</div>
     210
     211                <ul class="mdjm-extension-features-list">
     212                    <li>Dynamic Contact Forms</li>
     213                    <li>Stripe Payment Gateway</li>
     214                    <li>1 year support and licensing</li>
     215                </ul>
     216
     217                <div class="mdjm-extension-button-placeholder">
     218                    <?php
     219                    if ( class_exists( 'MDJM_Dynamic_ContactForms' ) && class_exists('MDJM_Stripe_Gateway') ) {
     220                        ?>
     221                    <div class="mdjm-extension-button">
     222                        <a class="mdjm-button-secondary">You already have this bundle</a>
     223                    </div>
     224                        <?php
     225                    } else {
     226                        ?>
     227                    <div class="mdjm-extension-price">£50</div>
     228                    <div class="mdjm-extension-button">
     229                        <a class="button-primary" href="<?php echo $extension_url?>/mdjm-beginner-bundle/">Buy now</a>
     230                    </div>
     231                        <?php
     232                    };
     233                    ?>
     234                </div>
     235            </div>
     236           
     237            <!-- Second column -->
     238            <div class="mdjm-extension-grid">
     239                <div class="mdjm-extension-name-section">
     240                    <div class="mdjm-extension-name">All-Out Bundle</div>
     241                </div>
     242
     243                <div class="mdjm-extension-snippet">
     244                    This bundle is perfect for those that want everything we have to offer. It’s a great offer to be had at £65 instead of £80 when purchased separately and will give you updates and support for 1 year from purchase date.
     245                </div>
     246
     247                <div class="mdjm-extension-features">Main Features:</div>
     248
     249                <ul class="mdjm-extension-features-list">
     250                    <li>Stripe Payment Gateway</li>
     251                    <li>Dynamic Contact Forms</li>
     252                    <li>Spotify Playlist Converter</li>
     253                    <li>SMS Sender</li>
     254                    <li>1 year support and licensing</li>
     255                </ul>
     256
     257                <div class="mdjm-extension-button-placeholder">
     258                    <?php
     259                    if ( class_exists( 'MDJM_Stripe_Gateway' ) && class_exists( 'MDJM_Dynamic_ContactForms' ) && class_exists( 'MDJM_SP_Converter' ) && class_exists( 'MDJM_SMS_Sender' ) ) {
     260                        ?>
     261                    <div class="mdjm-extension-button">
     262                        <a class="mdjm-button-secondary">You already have this bundle</a>
     263                    </div>
     264                        <?php
     265                    } else {
     266                        ?>
     267                    <div class="mdjm-extension-price">£65</div>
     268                    <div class="mdjm-extension-button">
     269                        <a class="button-primary"  href="<?php echo $extension_url?>/mdjm-all-out-bundle/">Buy now</a>
     270                    </div>
     271                        <?php
     272                    };
     273                    ?>
     274                </div>
     275            </div>
     276           
    141277        </div>
    142278    </div>
     
    144280
    145281} // mdjm_extensions_page
    146 
    147 /**
    148  * Retrieve the published extensions from mdjm.co.uk and store within transient.
    149  *
    150  * @since   1.0.3
    151  * @return  void
    152  */
    153 function mdjm_get_extensions() {
    154     $extensions = get_transient( '_mdjm_extensions_feed' );
    155 
    156     if ( false === $extensions || doing_action( 'mdjm_daily_scheduled_events' ) ) {
    157         $route    = 'https://mdjm.co.uk/edd-api/products/';
    158         $number   = 20;
    159         $endpoint = add_query_arg(
    160             array(
    161                 'number'  => $number,
    162                 'orderby' => 'rand',
    163             ),
    164             $route
    165         );
    166 
    167         // Make the API request
    168         $response = wp_remote_get( $endpoint );
    169 
    170         // Check for request errors
    171         if ( is_wp_error( $response ) ) {
    172             // Log the error and return
    173             error_log( 'API Request Error: ' . $response->get_error_message() );
    174             return array(); // Return an empty array to avoid further issues with the loop
    175         }
    176 
    177         // Get the response code
    178         $response_code = wp_remote_retrieve_response_code( $response );
    179         error_log( 'API Response Code: ' . $response_code );
    180 
    181         if ( 200 === $response_code ) {
    182             $body    = wp_remote_retrieve_body( $response );
    183             $content = json_decode( $body );
    184 
    185             if ( is_object( $content ) && isset( $content->products ) ) {
    186                 set_transient( '_mdjm_extensions_feed', $content->products, DAY_IN_SECONDS / 2 ); // Store for 12 hours
    187                 $extensions = $content->products;
    188             } else {
    189                 // Log an error message if the expected data is missing
    190                 error_log( 'API Response does not contain the expected products data.' );
    191             }
    192         } else {
    193             // Log an error message if the API response code is not 200
    194             error_log( 'API Request Failed. Response Code: ' . $response_code );
    195         }
    196     }
    197 
    198     return $extensions;
    199 }
    200 add_action( 'mdjm_daily_scheduled_events', 'mdjm_get_extensions' );
    201 
     282add_filter('admin_footer_text', '__return_empty_string');
     283add_filter('update_footer', '__return_empty_string', 11);
  • mobile-dj-manager/trunk/includes/admin/menu.php

    r3001907 r3224058  
    102102    $mdjm_settings_page = add_submenu_page( 'edit.php?post_type=mdjm-event', __( 'Settings', 'mobile-dj-manager' ), __( '<strong><span style="color:#F90">Settings</span></strong>', 'mobile-dj-manager' ), 'manage_mdjm', 'mdjm-settings', 'mdjm_options_page' );
    103103
    104     $mdjm_extensions_page = add_submenu_page( 'edit.php?post_type=mdjm-event', __( 'MDJM Extensions', 'mobile-dj-manager' ), __( '<strong><span style="color:#F90">Extensions</span></strong>', 'mobile-dj-manager' ), 'mdjm_employee', 'mdjm-addons', 'mdjm_extensions_page' );
     104    $mdjm_extensions_page = add_submenu_page( 'edit.php?post_type=mdjm-event', __( 'MDJM Extensions', 'mobile-dj-manager' ), __( '<strong><span style="color:#32CD32">Extensions</span></strong>', 'mobile-dj-manager' ), 'mdjm_employee', 'mdjm-addons', 'mdjm_extensions_page' );
    105105
    106106} // mdjm_admin_menu
  • mobile-dj-manager/trunk/includes/ajax-functions.php

    r3219891 r3224058  
    12161216    $travel_data   = $mdjm_event->get_travel_data();
    12171217    $employee_id   = isset( $_POST['employee_id'] ) ? sanitize_text_field( wp_unslash( $_POST['employee_id'] ) ) : 0;
     1218   
    12181219    if ( isset( $_POST['venue'] ) ) {
    1219         $dest = json_decode( wp_unslash( $_POST['venue'] ), true );
    1220     } else {
    1221         $dest = null;
    1222     }
     1220        if ( is_array( $_POST['venue'] ) ) {
     1221            $dest = array_map( 'sanitize_text_field', $_POST['venue'] );
     1222        } else {
     1223            $dest = json_decode( wp_unslash( $_POST['venue'] ), true );
     1224            if ( is_array( $dest ) ) {
     1225                $dest = array_map( 'sanitize_text_field', $dest );
     1226            } else {
     1227                $dest = sanitize_text_field( $_POST['venue'] );
     1228            }
     1229        }
     1230    } else {
     1231        $dest = '0';
     1232    }
     1233   
    12231234    $package_cost  = 0;
    12241235    $addons_cost   = 0;
  • mobile-dj-manager/trunk/mobile-dj-manager.php

    r3219891 r3224058  
    55 * Plugin URI: https://www.mdjm.co.uk
    66 * Description: The flexible event management solution for WordPress - not just for DJs!
    7  * Version: 1.7.5.5
     7 * Version: 1.7.5.6
    88 * Date: January 2025
    99 * Author: MDJM <[email protected]>
     
    135135        private function setup_constants() {
    136136            global $wpdb;
    137             define( 'MDJM_VERSION_NUM', '1.7.5.5' );
     137            define( 'MDJM_VERSION_NUM', '1.7.5.6' );
    138138            define( 'MDJM_VERSION_KEY', 'mdjm_version' );
    139139            define( 'MDJM_PLUGIN_DIR', untrailingslashit( dirname( __FILE__ ) ) );
  • mobile-dj-manager/trunk/readme.txt

    r3219891 r3224058  
    55Tested up to: 6.7
    66Requires PHP: 7.4
    7 Stable tag: 1.7.5.5
     7Stable tag: 1.7.5.6
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    8787== Changelog ==
    8888
     89= 1.7.5.6 =
     90
     91**Fix:** Security Fixes
     92**Enhancement:** More friendly Extensions Page layout
     93
    8994= 1.7.5.5 =
    9095
Note: See TracChangeset for help on using the changeset viewer.