انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل ایجاد محدودیت درتعداد دانلود رایگان (PHP)

مشکل ایجاد محدودیت درتعداد دانلود رایگان (PHP)

#2
سلام.
بنده روند جستجو در کدها را شرح می دهم تا دوستان چگونگی یافتن بخش های مورد نظر خود در کدهای پلاگین ها را متوجه شوند (که معمولا حجم کدها زیاد است و برای ما آشنا نیستند). البته کد این پلاگین خیلی طولانی نیست و صرفا با خواندن توضیحات توابع، می توان تابع های مورد نظر را پیدا کرد، اما روش کلی را توضیح می دهم که در مواردی نیز که توابع، توضیحات خوبی ندارند یا حجم کدها خیلی زیاد است، مفید خواهد بود.
کدها را در یک ویرایشگر مناسب (مثل Adobe Dreamweaver) کپی می کنیم تا خواندن و همچنین جستجو در متن آن، آسانتر شود.
با توجه به خواسته شما، اولین چیزی که باید به دنبال آن در کدها بگردیم، چگونگی تشخیص تعداد دانلود کاربر است که با یک نگاه به توابع تعریف شده و توضیحات بالای آنها، تابع زیر را می یابیم :

کد پی‌اچ‌پی:
/**
 * Get the number of downloads remaining for a user.
 *
 * @param int $user_id ID of the user to check, or 0 for current user.
 *
 * @since  1.0.1
 * @return int|false Number of downloads available.
 */
function rcp_edd_member_downloads_number_remaining$user_id ) {

 
   if ( ! function_exists'rcp_get_subscription_id' ) ) {
 
       return false;
 
   }

 
   global $rcp_levels_db;

 
   if ( empty( $user_id ) ) {
 
       $user_id wp_get_current_user()->ID;
 
   }

 
   $remaining 0;

 
   $sub_id rcp_get_subscription_id$user_id );

 
   if $sub_id ) {
 
       $max       = (int) $rcp_levels_db->get_meta$sub_id'edd_downloads_allowed'true );
 
       $current   = (int) get_user_meta$user_id'rcp_edd_member_downloads_current_download_count'true );
 
       $remaining $max $current;
 
   }

 
   if $remaining ) {
 
       $remaining 0;
 
   }

 
   return $remaining;



بنابراین تابع rcp_edd_member_downloads_number_remaining تعداد دانلود را تشخیص می دهد. نام آن را در کدها جستجو می کنیم تا ببینیم در چه قسمت هایی به کار رفته و هر قسمت را بررسی می کنیم.
در نتایج جستجو، بخش زیر را می یابیم که تابعی برای تشخیص زمان پایان یافتن تعداد دانلود رایگان کاربر است :

کد پی‌اچ‌پی:
/**
 * Determines if the member is at the product submission limit.
 *
 * @param int $user_id ID of the user to check, or 0 for current user.
 *
 * @since  1.0
 * @return bool True if the user is at the limit, false if not.
 */
function rcp_edd_member_downloads_member_at_limit$user_id ) {

 
   if ( ! function_exists'rcp_get_subscription_id' ) ) {
 
       return;
 
   }

 
   if ( empty( $user_id ) ) {
 
       $user_id wp_get_current_user()->ID;
 
   }

 
   $remaining rcp_edd_member_downloads_number_remaining$user_id );
 
   $at_limit  = ( $remaining ) ? false true;

 
   return $at_limit;


بنابراین نام این تابع (rcp_edd_member_downloads_member_at_limit) را در کدها جستجو می کنیم.
کد زیر را می یابیم :

کد پی‌اچ‌پی:
// Check if the member is at the download limit
 
   if rcp_edd_member_downloads_member_at_limit$user->ID ) && ! edd_has_user_purchased$user->ID$args['download_id'] ) ) {
 
       return $purchase_form;
 
   

کد بالا، بخشی از کد تابع rcp_edd_member_downloads_download_button می باشد (از اسم آن معلوم است که بعد از کلیک بر روی دکمه دانلود اجرا می شود)، علاوه بر چک کردن پایان یافتن تعداد دانلود رایگان، یک شرط دیگر را نیز بررسی می کند و در واقع، کد نهایی برای چک کردن این است که فرم خرید (یا افزودن به سبد خرید یا ...) به کاربر نمایش داده شود یا خیر.
اکنون اگر می خواهید که کاربر به یک صفحه جدید منتقل شود، باید کد انتقال خود را به جای بخش زیر از کد بالا بنویسید :

کد پی‌اچ‌پی:
return $purchase_form

برای منتقل کردن (redirect) کاربر به صفحه جدید، کلید زیر را بخوانید :

کلید شماره 461

دقت کنید که برای عدم اجرا شدن ادامه کدهای صفحه PHP، حتما تابع die را بعد از تابع header بنویسید :

کلید شماره 9947

بنده سریع کدها را خواندم، بنابراین قبل از اعمال تغییرات، یک بار دیگر نیز خودتان کل کدها را چک کنید و همچنین قبل از اعمال تغییرات، حتما یک back up از کدهای اصلی داشته باشید (همچنین ممکن است بتوانید محل های دیگری را برای نوشتن کد redirect پیدا کنید و این بستگی به کل کدهای پلاگین و سلیقه کدنویسی شما دارد).

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پیام‌های این موضوع
RE: مشکل ایجاد محدودیت درتعداد دانلود رایگان (PHP) - توسط admin - ۱۳۹۵/۱۲/۲۴, ۱۱:۱۴ ق.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان