За последние 24 часа нас посетили 23863 программиста и 1665 роботов. Сейчас ищут 1292 программиста ...

Создание функции к плагину Secure invites

Тема в разделе "Wordpress", создана пользователем trylepta, 29 янв 2016.

  1. trylepta

    trylepta Новичок

    С нами с:
    29 янв 2016
    Сообщения:
    1
    Симпатии:
    0
    Всем доброе время суток, с WordPress дружу не долго, такое же время дружу и с php.
    Возникла потребность дописать не большей функционал к старому плагину.

    Дана функция secure_invite_user_registered которая начисляет балы за регистрацию(по приглашению) по такому принципу если человек А пригласил человека Б ему даются 5 балов, если человек Б приглашает человека В, то человеку А даются 3 бала и т.д
    Хочу отследить и вывести эту цепочку по именам, чтоб видно было пользователю А имя человека Б которого он пригласил, а так же было видно имя пользователя человека В которого пригласил человек Б

    Вот функция которая это дело делает
    Код (PHP):
    1. function secure_invite_user_registered($user_id) {
    2.  
    3.     // get the email of the new user
    4.     $user = get_userdata($user_id);
    5.     $email = $user->user_email;
    6.     
    7.     // save the invite code, if one is set
    8.     if ($_SESSION["invite_code"] != ""){
    9.         update_user_meta($user_id, "secure_invite_invitation_code", $_SESSION["invite_code"]);
    10.     }
    11.     
    12.     // check if this is an invited email address
    13.     $invited = secure_invites_is_valid_email($email);
    14.     if ($invited) {
    15.     
    16.         // get the id of the level 1 inviter
    17.         $inviterid_1 = secure_invite_get_inviter_id($email);
    18.         // increase the level 1 inviter points by 5
    19.         $points_1 = (int)secure_invite_get_user_meta($inviterid_1, "secure_invite_points");
    20.         update_user_meta($inviterid_1, "secure_invite_points", ($points_1+10));
    21.         // get the inviter 1 email
    22.         $inviter_1 = get_userdata($inviterid_1);
    23.         $email_1 = $inviter_1->user_email;
    24.         
    25.         // get the id of the level 2 inviter
    26.         $inviterid_2 = secure_invite_get_inviter_id($email_1);
    27.         
    28.         // if they were invited
    29.         if ($inviterid_2 != "") {
    30.         
    31.             // increase the level 2 inviter points by 2
    32.             $points_2 = (int)secure_invite_get_user_meta($inviterid_2, "secure_invite_points");
    33.             update_user_meta($inviterid_2, "secure_invite_points", ($points_2+2));
    34.             // get the inviter 2 email
    35.             $inviter_2 = get_userdata($inviterid_2);
    36.             $email_2 = $inviter_2->user_email;
    37.             
    38.             // get the id of the level 3 inviter
    39.             $inviterid_3 = secure_invite_get_inviter_id($email_2);
    40.             
    41.             // if they were invited
    42.             if ($inviterid_3 != "") {
    43.             
    44.                 // increase the level 3 inviter points by 1
    45.                 $points_3 = (int)secure_invite_get_user_meta($inviterid_3, "secure_invite_points");
    46.                 update_user_meta($inviterid_3, "secure_invite_points", ($points_3+1));
    47.                 
    48.             }
    49.         }
    50.     }
    51.     return $user_id;
    52. }
    53.  

    С плагином шел shortcode который выводит только имя пользователя который его пригласил. Пробовал дописывать проверки с верхней функции в этот шоркткод думал так отследить, но не вышло, навертел непонятно что)
    Была еще идея вмести с начислениями этих балов в отдельную таблицу заносить имя, а потом с этой таблицы выводить.


    Вот этот шоркод:
    Код (PHP):
    1. function secure_invite_myinviter_shortcode($atts, $content="") {
    2.     extract(shortcode_atts(array(
    3.         'id' => null
    4.     ), $atts));
    5.     if ($id == null) {
    6.         global $current_user;
    7.         $email = $current_user->user_email;
    8.     } else {
    9.         $user = get_userdata($id);
    10.         $email = $user->user_email;
    11.     }
    12.     if ($email) {
    13.         global $wpdb;
    14.         $sql = $wpdb->prepare("select u.display_name from {$wpdb->users} u inner join " . secure_invite_prefix() . "invitations i on i.user_id = u.id where i.invited_email = %s;", $email);
    15.         return $wpdb->get_var($sql);
    16.     }
    17. }
    18.  
    Я не прошу написать за меня (хотя было бы не плохо:)), я прошу чтоб вы подсказали как это сделать, знаю, что вроде все дано, но не хватает знаний этим воспользоваться)

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.