Ejemplo n.º 1
0
 /**
  * Billing by all users at 3-30
  */
 public static function dailyAllUsers()
 {
     global $DB;
     $table = \Hawkart\Megatv\SubscribeTable::getTableName();
     $time_update = "03:30:00";
     $datetime = new \Bitrix\Main\Type\Datetime(date("Y-m-d " . $time_update), 'Y-m-d H:i:s');
     $datetime_next_date = new \Bitrix\Main\Type\Datetime(date('Y-m-d' . $time_update, strtotime('+1 day')), 'Y-m-d H:i:s');
     $datetime_from_db = date("d.m.Y " . $time_update);
     $datetime_to_db = date("d.m.Y " . $time_update, strtotime('+1 day'));
     /**
      * Get all users
      */
     $arUsers = array();
     $arFilter = array("ACTIVE" => "Y");
     $rsUsers = \CUser::GetList($by = "LAST_NAME", $order = "asc", $arFilter);
     while ($arUser = $rsUsers->GetNext()) {
         $arUsers[$arUser["ID"]] = $arUser;
     }
     /**
      * Get all priced subscribe for all users
      */
     $arSubscribeUsers = array();
     $result = \Hawkart\Megatv\SubscribeTable::getList(array('filter' => array("UF_ACTIVE" => 1, ">UF_CHANNEL_ID" => 0, ">UF_CHANNEL.UF_PRICE_H24" => 0, "<=UF_DATETIME_TO" => $datetime), 'select' => array("ID", "PRICE" => "UF_CHANNEL.UF_PRICE_H24", "UF_USER_ID")));
     while ($arSub = $result->fetch()) {
         $arSubscribeUsers[$arSub["UF_USER_ID"]][] = array("ID" => $arSub["ID"], "PRICE" => $arSub["PRICE"]);
     }
     $result = \Hawkart\Megatv\SubscribeTable::getList(array('filter' => array("UF_ACTIVE" => 1, ">UF_SERVICE_ID" => 0, ">UF_SERVICE.UF_PRICE" => 0), 'select' => array("ID", "PRICE" => "UF_SERVICE.UF_PRICE", "UF_USER_ID")));
     while ($arSub = $result->fetch()) {
         $arSubscribeUsers[$arSub["UF_USER_ID"]][] = array("ID" => $arSub["ID"], "PRICE" => $arSub["PRICE"]);
     }
     /**
      * Make transaction for 1 day for all users
      */
     foreach ($arSubscribeUsers as $user_id => $arSubscribes) {
         $daily_price = 0;
         foreach ($arSubscribes as $arSubscribe) {
             $daily_price += $arSubscribe["PRICE"];
         }
         $balance = \CUserEx::getBudget($user_id);
         if ($balance > 0 && $daily_price > 0) {
             \CSaleAccountEx::transaction(-1 * $daily_price, $user_id, "Оплата услуг за " . date('d.m.Y'));
             $strSql = "UPDATE " . $table . " SET UF_DATETIME_TO=curdate() + INTERVAL 1 DAY + INTERVAL 3 HOUR + INTERVAL 30 MINUTE WHERE UF_USER_ID=" . $user_id;
             $res = $DB->Query($strSql, false, $err_mess . __LINE__);
             //Send email to user to add money to budget for 3 days
             if ($balance < $daily_price * 2) {
                 \CEvent::SendImmediate("NOTIFICATION_PAY_AFTER_DAYS", SITE_ID, array("EMAIL_TO" => $arUsers[$user_id]["EMAIL"], "PRICE" => $daily_price * 5));
             }
         }
     }
 }
Ejemplo n.º 2
0
 public function up()
 {
     global $APPLICATION;
     $arHlData = $this->arHlData;
     \Bitrix\Main\Loader::includeModule("highloadblock");
     $arHlblock = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => \Hawkart\Megatv\PeopleTable::getTableName())))->fetch();
     if ($arHlblock) {
         $oUserTypeEntity = new \CUserTypeEntity();
         $sort = 500;
         foreach ($arHlData['FIELDS'] as $fieldName => $fieldValue) {
             $aUserField = array('ENTITY_ID' => 'HLBLOCK_' . $arHlblock["ID"], 'FIELD_NAME' => $fieldName, 'USER_TYPE_ID' => $fieldValue[1], 'SORT' => $sort, 'MULTIPLE' => 'N', 'MANDATORY' => $fieldValue[0], 'SHOW_FILTER' => 'N', 'SHOW_IN_LIST' => 'Y', 'EDIT_IN_LIST' => 'Y', 'IS_SEARCHABLE' => 'N', 'SETTINGS' => array());
             if (isset($fieldValue[2]) && is_array($fieldValue[2])) {
                 $aUserField = array_merge($aUserField, $fieldValue[2]);
             }
             $resProperty = \CUserTypeEntity::GetList(array(), array('ENTITY_ID' => $aUserField['ENTITY_ID'], 'FIELD_NAME' => $aUserField['FIELD_NAME']));
             if ($aUserHasField = $resProperty->Fetch()) {
                 $idUserTypeProp = $aUserHasField['ID'];
                 if ($oUserTypeEntity->Update($idUserTypeProp, $aUserField)) {
                     $this->out('Обновлено свойство - ' . $fieldValue[2]['EDIT_FORM_LABEL']['ru']);
                 } else {
                     if ($ex = $APPLICATION->GetException()) {
                         $this->outError('Ошибка - ' . $ex->GetString());
                     }
                 }
             } else {
                 if ($idUserTypeProp = $oUserTypeEntity->Add($aUserField)) {
                     $this->out('Добавлено новое свойство - ' . $fieldValue[2]['EDIT_FORM_LABEL']['ru']);
                 } else {
                     if ($ex = $APPLICATION->GetException()) {
                         $this->outError('Ошибка - ' . $ex->GetString());
                     }
                 }
             }
             $sort += 100;
         }
         $dbUsers = \CUser::GetList($by = "EMAIL", $order = "desc", array("UF_SOTAL_LOGIN" => false));
         while ($arUser = $dbUsers->Fetch()) {
             \CUserEx::generateDataSotal($arUser["ID"]);
         }
         $this->outSuccess('Все готово на %d%%', 100);
     }
 }
Ejemplo n.º 3
0
         $fields = array("NAME" => $arPost["NAME"], "LAST_NAME" => $arPost["LAST_NAME"], "SECOND_NAME" => $arPost["SECOND_NAME"], "EMAIL" => $arPost["EMAIL"], "PERSONAL_BIRTHDAY" => $arPost["PERSONAL_BIRTHDAY"], "PERSONAL_PHONE" => $arPost["PERSONAL_PHONE"]);
         $message = "Данные успешно изменены.";
         if (empty($arUser["EMAIL"]) && !empty($arPost["EMAIL"])) {
             CUserEx::capacityAdd($arUser["ID"], 1);
             // за мэйл +1ГБ
             //При занесении мэйла менять тип авторизации
             $password = mb_substr(md5(uniqid(rand(), true)), 0, 8);
             $fields["EXTERNAL_AUTH_ID"] = "";
             $fields["PASSWORD"] = $password;
             $fields["CONFIRM_PASSWORD"] = $password;
             $arEventFields = array("USER_NAME" => trim($arPost["NAME"] . " " . $arPost["LAST_NAME"]), "PASSWORD" => $password, "EMAIL" => $arPost["EMAIL"]);
             CEvent::Send("USER_PASS_CHANGED_PROFILE", SITE_ID, $arEventFields);
             $message .= "На ваш email отправлен новый пароль.";
         }
         if (empty($arUser["PERSONAL_PHONE"]) && !empty($arPost["PERSONAL_PHONE"])) {
             CUserEx::capacityAdd($arUser["ID"], 1);
             // за ттееллееффоонн +1ГБ
         }
         $сuser->Update($arUser["ID"], $fields);
         $strError = $сuser->LAST_ERROR;
         $result['status'] = true;
         $result['message'] = "<font style='color:green'>" . $message . "</font>";
     }
 }
 if ($action == "passport") {
     $arPost = $arPost["PASSPORT"];
     $arPost["SERIA"] = preg_replace("/[^0-9]/", '', $arPost["SERIA"]);
     foreach ($arPost as &$value) {
         $value = htmlspecialcharsbx(trim($value));
     }
     if (!preg_match("/^([0-9]{4})\$/", $arPost["SERIA"])) {
Ejemplo n.º 4
0
 public static function createUser($providerName, $userProfile)
 {
     global $USER;
     COption::SetOptionString("main", "captcha_registration", "N");
     $default_group = COption::GetOptionString("main", "new_user_registration_def_group");
     if (!empty($default_group)) {
         $arrGroups = explode(",", $default_group);
     }
     $password = mb_substr(md5(uniqid(rand(), true)), 0, 8);
     $birthday = $userProfile["birthDay"] . "." . $userProfile["birthMonth"] . "." . $userProfile["birthYear"];
     if (strlen($birthday) != 10) {
         $birthday = "";
     }
     $email = "";
     if (!empty($userProfile["email"])) {
         $email = $userProfile["email"];
     } else {
         if (!empty($userProfile["emailVerified"])) {
             $email = $userProfile["emailVerified"];
         }
     }
     if (empty($userProfile["firstName"]) && empty($userProfile["lastName"])) {
         $userProfile["firstName"] = $userProfile["displayName"];
     }
     $cUser = new \CUser();
     $arFields = array("NAME" => $userProfile["firstName"], "LAST_NAME" => $userProfile["lastName"], "EMAIL" => $email, "LOGIN" => $email, "PERSONAL_GENDER" => strtoupper(substr($userProfile["gender"], 0, 1)), "PERSONAL_WWW" => $arResult['USER']["URL"], "PERSONAL_BIRTHDAY" => $birthday, "ACTIVE" => "Y", "GROUP_ID" => $arrGroups, "EXTERNAL_AUTH_ID" => $providerName . $userProfile["identifier"], "PASSWORD" => $password, "CONFIRM_PASSWORD" => $password, "PERSONAL_PHONE" => $userProfile["phone"], "PERSONAL_CITY" => $userProfile["home_town"]);
     //$json = file_get_contents('https://graph.facebook.com/'.$userProfile["identifier"].'/picture?type=large');
     //$file = $_SERVER["DOCUMENT_ROOT"].'/upload/avatar/'.$userProfile["identifier"].'.jpg';
     if (!empty($userProfile["photoURL"])) {
         if ($providerName == "facebook") {
             $img = file_get_contents('https://graph.facebook.com/' . $userProfile["identifier"] . '/picture?type=large');
             $file = $_SERVER["DOCUMENT_ROOT"] . '/upload/avatar/' . $userProfile["identifier"] . '.jpg';
             file_put_contents($file, $img);
         } else {
             if ($providerName == "yandex") {
                 $img = file_get_contents('https://avatars.yandex.net/get-yapic/' . $userProfile["identifier"] . '/islands-200');
                 $file = $_SERVER["DOCUMENT_ROOT"] . '/upload/avatar/' . $userProfile["identifier"] . '.jpg';
                 file_put_contents($file, $img);
             } else {
                 if ($providerName == "linkedin") {
                     $img = file_get_contents($userProfile["photoURL"]);
                     $file = $_SERVER["DOCUMENT_ROOT"] . '/upload/avatar/' . $userProfile["identifier"] . '.jpg';
                     file_put_contents($file, $img);
                 } else {
                     $file = $userProfile["photoURL"];
                 }
             }
         }
         $arImage = \CFile::MakeFileArray($file);
         $arImage["MODULE_ID"] = "main";
         $arFields["PERSONAL_PHOTO"] = $arImage;
     }
     $USER_ID = $cUser->Add($arFields);
     if ($USER_ID) {
         \CUser::SendUserInfo($USER_ID, SITE_ID, "Приветствуем Вас как нового пользователя нашего сайта!");
         if (!empty($email)) {
             \CUserEx::capacityAdd($USER_ID, 1);
             // за мэйл +1ГБ
             $fields = array();
             $fields["EXTERNAL_AUTH_ID"] = "";
             $fields["PASSWORD"] = $password;
             $fields["CONFIRM_PASSWORD"] = $password;
             $сuser = new \CUser();
             $сuser->Update($USER_ID, $fields);
             $arEventFields = array("USER_NAME" => trim($userProfile["firstName"] . " " . $userProfile["lastName"]), "PASSWORD" => $password, "EMAIL" => $email);
             CEvent::Send("USER_PASS_CHANGED_PROFILE", SITE_ID, $arEventFields);
             $USER->Login($email, $password, 'N');
         }
         //Бонус за регистрацию
         \CUserEx::capacityAdd($USER_ID, BONUS_FOR_REGISTRATION);
         self::connectToUser($USER_ID, $providerName, $userProfile);
     } else {
         echo $cUser->LAST_ERROR;
     }
     COption::SetOptionString("main", "captcha_registration", "Y");
     return $USER_ID;
 }
Ejemplo n.º 5
0
    <?php 
global $USER;
if ($USER->IsAuthorized()) {
    $budget = floatval(\CUserEx::getBudget());
    $arUser = \CUserEx::updateAvatar($USER->GetID());
    if (floatval($arUser["UF_CAPACITY_BUSY"]) == 0 || floatval($arUser["UF_CAPACITY"]) == 0) {
        $filledPercent = 0;
    } else {
        $filledPercent = round(floatval($arUser["UF_CAPACITY_BUSY"]) / floatval($arUser["UF_CAPACITY"]), 4);
    }
    $APPLICATION->AddViewContent('user_budget', number_format($budget, 0, "", " "));
    $APPLICATION->AddViewContent('user_filled_space', round($arUser["UF_CAPACITY_BUSY"], 2));
    $APPLICATION->AddViewContent('user_filled_space_percent', $filledPercent);
    $APPLICATION->AddViewContent('user_empty_space', round(floatval($arUser["UF_CAPACITY"] - $arUser["UF_CAPACITY_BUSY"]), 2));
    ?>
        <div class="box-userbar__userbar userbar">
            
            <?php 
    /*<div class="userbar__disk-space disk-space" data-type="fill-disk-space" onclick="window.location.href='/personal/services/';" style="cursor: pointer;">
     		<div class="disk-space__progress-holder progress-holder" data-progress="<?=$filledPercent?>"></div>
     		<span class="disk-space__label"><?=GetMessage('BUSY')?> <strong class="disk-space__strong"><?=round($arUser["UF_CAPACITY_BUSY"], 2);?> <?=GetMessage('GB')?></strong></span>
     	</div>*/
    ?>
              

            <nav class="box-userbar__usernav usernav" data-module="user-navigation">
                <div class="usernav__user-card">
    				<a href="/personal/" class="usernav__user-avatar<?php 
    if (!$arUser["PERSONAL_PHOTO"]) {
        ?>
 usernav__user-avatar--empty<?php 
Ejemplo n.º 6
0
 public function capacityAdd($SUBSCRIBE_TO, $USER_ID)
 {
     $result = \Hawkart\Megatv\ServiceTable::getById($SUBSCRIBE_TO);
     if ($arService = $result->fetch()) {
         $gb = IntVal($arService["UF_TEXT"]);
     }
     $gb = preg_replace("/[^0-9]/", '', $gb);
     if (intval($gb) > 0) {
         \CUserEx::capacityAdd($USER_ID, $gb);
     }
 }
Ejemplo n.º 7
0
            CUserEx::subcribeOnFreeChannels($USER_ID);
            $arFields["USER_ID"] = $USER_ID;
            $event = new CEvent();
            $event->SendImmediate("NEW_USER", SITE_ID, $arFields);
            if (CDev::check_phone($phone)) {
                $checkword = mb_substr(md5(uniqid(rand(), true)), 0, 8);
                $cuser = new CUser();
                $cuser->Update($USER_ID, array("UF_PHONE_CHECKWORD" => $checkword));
                $text = GetMessage('AUTH_ACTIVATE_CODE_TEXT') . $checkword;
                CEchogroupSmsru::Send($phone, $text);
                $result['message'] = "<font style='color:green'>" . GetMessage('AUTH_REGISTER_SUCCESS_TEXT_1') . "</font><br />";
            } else {
                //Для подтверждения регистрации перейдите по следующей ссылке:
                //http://#SERVER_NAME#/auth/index.php?confirm_registration=yes&confirm_user_id=#USER_ID#&confirm_code=#CONFIRM_CODE#
                $event->SendImmediate("NEW_USER_CONFIRM", SITE_ID, $arFields);
                //на почту письмо для подтверждения
                $result['message'] = "<font style='color:green'>" . GetMessage('AUTH_REGISTER_SUCCESS_TEXT_2') . "</font><br />";
                CUserEx::capacityAdd($USER_ID, 1);
                // за мэйл +1ГБ
            }
        }
        $result['status'] = "success";
        //Бонус за регистрацию
        CUserEx::capacityAdd($USER_ID, BONUS_FOR_REGISTRATION);
        COption::SetOptionString("main", "captcha_registration", "Y");
    } else {
        $result['status'] = 'error';
        $result['message'] = $html;
    }
}
exit(json_encode($result));
Ejemplo n.º 8
0
     $arSchedule["UF_DATE_START"] = $arSchedule['UF_DATE_START']->toString();
     $arSchedule["UF_DATE_END"] = $arSchedule['UF_DATE_END']->toString();
 }
 //check if schedule in recording yet. Deleted to recordable
 $update = false;
 $result = \Hawkart\Megatv\RecordTable::getList(array('filter' => array("=UF_USER_ID" => $USER_ID, "=UF_SCHEDULE_ID" => $prog_time), 'select' => array("ID", "UF_DELETED"), 'limit' => 1));
 if ($arRecord = $result->fetch()) {
     if (intval($arRecord["UF_DELETED"]) == 1) {
         $update = true;
         $update_id = $arRecord["ID"];
     } else {
         exit(json_encode(array("status" => "error", "error" => "Такая запись уже есть.")));
     }
 }
 //money check
 $budget = \CUserEx::getBudget($user_id);
 if ($budget < 0) {
     exit(json_encode(array("status" => "error", "error" => "Для записи передачи пополните счет.")));
 }
 //Провеим, хватит ли пространства!
 $duration = strtotime($arSchedule["UF_DATE_END"]) - strtotime($arSchedule["UF_DATE_START"]);
 $minutes = ceil($duration / 60);
 $gb = $minutes * 18.5 / 1024;
 $busy = floatval($arUser["UF_CAPACITY_BUSY"]) + $gb;
 if ($busy >= floatval($arUser["UF_CAPACITY"])) {
     exit(json_encode(array("status" => "require-space", "error" => "Не достаточно места на диске для записи")));
 } else {
     if (in_array($arSchedule["UF_CHANNEL_BASE_ID"], $selectedChannels)) {
         $log_file = "/logs/sotal/sotal_" . date("d_m_Y_H") . ".txt";
         \CDev::log(array("ACTION" => "PUT_TO_RECORD", "DATA" => array("SCHEDULE_ID" => $prog_time, "DATE" => date("d.m.Y H:i:s"))), false, $log_file);
         if ($update) {