[DEV] Referral MOD With Contests ระบบการอ้างอิงสมาชิกที่แนะนำ

แนะนำ Mod ต่างๆ ของ PHPBB3 แนะนำความสามารถ ของ mod การติดตั้ง การเข้ากันได้กับเวอร์ชั่น

Moderator: mindphp

ภาพประจำตัวสมาชิก
M004
PHP VIP Members
PHP VIP Members
โพสต์: 1323
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

[DEV] Referral MOD With Contests ระบบการอ้างอิงสมาชิกที่แนะนำ

โพสต์โดย M004 » 30/04/2013 5:24 pm

รายละเอียดเกี่ยวกับ [DEV] Referral MOD With Contests ระบบการอ้างอิงสมาชิกที่แนะนำ

พัฒนาโดย : Siropu
Version : 1.1.4
phpBB Version(s) : phpBB 3.0.10 3.0.11
ดาวน์โหลดได้ที่ : https://www.phpbb.com/community/viewtop ... &t=2158483
1.jpg

2.jpg

3.jpg

4.jpg


ขั้นตอนการติดตั้ง
เปิดไฟล์ index.php
ค้นหา

โค้ด: เลือกทั้งหมด

display_forums('', $config['load_moderators']); 

เติมก่อนคำที่หา

โค้ด: เลือกทั้งหมด

// Begin Referral MOD
// Get referrer user ID
$r = request_var('r', 0);

// Let's check if the referrer is valid
if ($r > 0)
{
    $sql = 'SELECT user_id
        FROM '
 . USERS_TABLE . '
        WHERE user_id='
 . $r . '
        AND user_type IN ('
 . USER_NORMAL . ', ' . USER_FOUNDER . ')';
    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);

    // If the referrer is valid, set the cookie
    if (!empty($row['user_id']))
    {
        $user->set_cookie('referrer_id', $r, time()+60*60*24*365);

        header("HTTP/1.1 301 Moved Permanently"); 
        header
("Location: " . generate_board_url()); 
    
}
}

if (!empty($config['referral_mod_version']))
{
    $user->add_lang('mods/referral');

    if ($config['referral_contests_display'])
    {
        // Get the last contest
        $sql = 'SELECT *
            FROM '
 . REFERRAL_CONTESTS_TABLE . '
            ORDER BY contest_end_date DESC'
;
        $result = $db->sql_query_limit($sql, 1, 0);
        $row = $db->sql_fetchrow($result);

        $template->assign_vars(array(
            'CONTEST_DISPLAY'     => $config['referral_contests_display'],
            'CONTEST_NAME'        => $row['contest_name'],
            'CONTEST_DESCRIPTION' => html_entity_decode($row['contest_description']),
            'CONTEST_START_DATE'  => $user->format_date($row['contest_start_date']),
            'CONTEST_END_DATE'    => $user->format_date($row['contest_end_date']),
            'CONTEST_DURATION'    => $row['contest_duration'],
            'CONTEST_STATUS'      => ($row['contest_end_date'] < time()) ? '<span style="color:red;">' . $user->lang['CONTEST_OVER'] . '</span>' : '<span style="color:green;">' . $user->lang['CONTEST_IN_PROGRESS'] . '</span>',
           )
        );
    
        
// Set some variables to use in statistics
        $contest_id         = $row['contest_id'];
        $contest_start_date = $row['contest_start_date'];
        $contest_end_date   = $row['contest_end_date'];
        $ref_min_posts      = $row['contest_condition'];

        $db->sql_freeresult($result);

        if ($row)
        {
            // Get contest statistics
            $sql = 'SELECT * ,
                COUNT(referrer_username) AS referrals_count
                FROM '
 . REFERRALS_TABLE . '
                LEFT JOIN '
 . USERS_TABLE . '
                ON referral_username=username
                WHERE referral_since
                BETWEEN '
 . $contest_start_date . ' AND ' . $contest_end_date . '
                AND user_posts >= '
 . $ref_min_posts . '
                GROUP BY referrer_username
                ORDER BY referrals_count DESC'
;
            $result = $db->sql_query_limit($sql, 3, 0);

            $i = 1;

            while ($row = $db->sql_fetchrow($result))
            {
                if ($i == 1)
                {
                    $referrer_username = $row['referrer_username'];
                }

                $template->assign_block_vars('contest_stats', array(
                    'REFERRER_USERNAME' => $row['referrer_username'],
                    'REFERRALS_COUNT'   => $row['referrals_count'],
                    'CONTEST_POS'       => '<img src="' . $phpbb_root_path . 'images/contest_pos_' . $i . '.gif" alt="' . $i . '" />',
                    )
                );
                     $i++;
            }
            $db->sql_freeresult($result);

            // If contest is over, save contest winner
            if ($contest_end_date < time())
            {
                $sql = 'UPDATE ' . REFERRAL_CONTESTS_TABLE . '
                    SET contest_winner = "'
 . $referrer_username . '"
                    WHERE contest_id = '
 . $contest_id;
                $db->sql_query($sql);
            }
        }
    }

    // Get top 5 referrers
    if ($config['top_five_referrers'])
    {
        $sql = 'SELECT *
            FROM '
 . USERS_TABLE . '
            WHERE user_type IN ('
 . USER_NORMAL . ', ' . USER_FOUNDER . ')
            AND user_referrals >=1
                    ORDER BY user_referrals DESC'
;
        $result = $db->sql_query_limit($sql, 5, 0);

        while ($row = $db->sql_fetchrow($result))
        {
            $template->assign_block_vars('top_five_referrers', array(
                'USERNAME'    => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
                'REFERRALS'   => $row['user_referrals'],
                )
            );
        }
        $db->sql_freeresult($result);

        // Set template variables
        $template->assign_vars(array(
            'TOP_FIVE_REFERRERS' => $config['top_five_referrers'],
            )
        );
    }
}
// End Referral MOD  


เปิดไฟล์ memberlist.php
ค้นหา

โค้ด: เลือกทั้งหมด

        'WARNINGS'        => isset($data['user_warnings']) ? $data['user_warnings'] : 0, 

เติมหลังคำค้นหา

โค้ด: เลือกทั้งหมด

        'REFERRALS'        => (!empty($config['user_referrals_profile']) && $config['user_referrals_profile'] == true && !empty($data['user_referrals'])) ? $data['user_referrals'] : 0, 


เปิดไฟล์ viewtopic.php
ค้นหา

โค้ด: เลือกทั้งหมด

                'age'            => '', 

เติมหลังคำค้นหา

โค้ด: เลือกทั้งหมด

                'referrals'     => (!empty($row['user_referrals'])) ? $row['user_referrals'] : 0, 

ค้นหา

โค้ด: เลือกทั้งหมด

        'POSTER_AGE'        => $user_cache[$poster_id]['age'], 

เติมหลังคำค้นหา

โค้ด: เลือกทั้งหมด

        'POSTER_REFERRALS'  => (!empty($config['user_referrals_viewtopic']) && $config['user_referrals_viewtopic'] == true) ? $user_cache[$poster_id]['referrals'] : 0, 


เปิดไฟล์ includes/constants.php
ค้นหา

โค้ด: เลือกทั้งหมด

// Additional tables  

เติมหลังคำค้นหา

โค้ด: เลือกทั้งหมด

define('REFERRALS_TABLE',              $table_prefix . 'referrals');
define('REFERRAL_CONTESTS_TABLE',              $table_prefix . 'referral_contests'); 

เปิดไฟล์ includes/ucp/ucp_register.php
ค้นหา

โค้ด: เลือกทั้งหมด

                // Register user...
                $user_id = user_add($user_row, $cp_data); 

เติมหลังคำค้นหา

โค้ด: เลือกทั้งหมด

                // Begin Referral MOD
                $rid = request_var($config['cookie_name'] . '_referrer_id', '', false, true);

                if (!empty($rid))
                {
                    $sql = 'SELECT username, user_referrals
                        FROM '
 . USERS_TABLE . '
                        WHERE user_id = '
 . $rid;
                    $result = $db->sql_query($sql);
                    $row = $db->sql_fetchrow($result);
                    $db->sql_freeresult($result);

                    $sql_ary = array(
                            'referral_username'  => $data['username'],
                            'referrer_id'        => $rid,
                            'referrer_username'  => $row['username'],
                            'referral_since'     => time(),
                        );

                    $db->sql_query('INSERT INTO ' . REFERRALS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
                    
                    $user_referrals 
= $row['user_referrals'] + 1;
                    
                    $sql 
= 'UPDATE ' . USERS_TABLE . '
                        SET user_referrals = '
 . $user_referrals . '
                        WHERE user_id = '
 . $rid;
                    $db->sql_query($sql);
                }
                // End Referral MOD  

เปิดไฟล์ language/en/common.php

เติมก่อนคำที่ค้นหา

โค้ด: เลือกทั้งหมด

$lang = array_merge($lang, array(
    'REFERRALS' => 'Referrals',
));
 


เปิดไฟล์ styles/prosilver/template/index_body.html
ค้นหา

โค้ด: เลือกทั้งหมด

<!-- IF S_DISPLAY_SEARCH or (S_USER_LOGGED_IN and not S_IS_BOT) -->

เติมก่อนคำค้นหา

โค้ด: เลือกทั้งหมด

<!-- IF CONTEST_NAME and CONTEST_DISPLAY -->
<!-- INCLUDE referral/referral_contest.html -->
<!-- ENDIF -->

ค้นหา

โค้ด: เลือกทั้งหมด

<!-- INCLUDE overall_footer.html -->

เติมก่อนคำที่ค้นหา

โค้ด: เลือกทั้งหมด

<!-- IF TOP_FIVE_REFERRERS -->
<!-- INCLUDE referral/top_five_referrers.html -->
<!-- ENDIF -->


เปิดไฟล์ styles/prosilver/template/memberlist_view.html
ค้นหา

โค้ด: เลือกทั้งหมด

         <!-- IF S_SHOW_ACTIVITY and POSTS -->

เติมก่อนคำค้นหา

โค้ด: เลือกทั้งหมด

         <!-- IF REFERRALS -->
         <dt>{L_REFERRALS}:</dt>
             <dd>{REFERRALS}</dd>
         <!-- ENDIF -->

เปิดไฟล์ styles/prosilver/template/viewtopic_body.html
ค้นหา

โค้ด: เลือกทั้งหมด

      <!-- END custom_fields -->

เติมหลังคำค้นหา

โค้ด: เลือกทั้งหมด

      <!-- IF postrow.POSTER_REFERRALS --><dd><strong>{L_REFERRALS}:</strong> {postrow.POSTER_REFERRALS}</dd><!-- ENDIF -->


เปิดไฟล์ styles/prosilver/theme/colours.css
ค้นหา

โค้ด: เลือกทั้งหมด

input.disabled {
   color: #666666;
}

เติมหลังคำค้นหา

โค้ด: เลือกทั้งหมด

.contest {
    font-size: 12px;
}
#contest-info {
    float: left;
   width: 45%;
    padding: 5px;
   margin: 5px;
   border-right: 1px #fffsolid;
    line-height: 16px;
}
#contest-info b {
    margin-right: 5px;
}
#contest-stastistics {
   float: left;
   width: 45%;
   padding: 10px;
}
#contest-stastistics p {
    margin-bottom: 2px;
}


ติดตั้งไฟล์

โค้ด: เลือกทั้งหมด

referral_mod_install.php
คุณไม่มีสิทธิ์ดูไฟล์ที่แนบมาในกระทู้

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 1 และ บุคคลทั่วไป 0 ท่าน