[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
1.jpg (12.64 KiB) เปิดดู 1569 ครั้ง

2.jpg
2.jpg (20.94 KiB) เปิดดู 1569 ครั้ง

3.jpg
3.jpg (14.89 KiB) เปิดดู 1569 ครั้ง

4.jpg
4.jpg (15.1 KiB) เปิดดู 1569 ครั้ง


ขั้นตอนการติดตั้ง
เปิดไฟล์ 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 #fff solid;
    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

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

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

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