1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-04 10:19:24 +02:00
Oinktube/plugin/CustomizeUser/Objects/Users_affiliations.php
Daniel Neto a8b704a667 Update
2023-08-18 14:46:33 -03:00

278 lines
9.6 KiB
PHP

<?php
require_once dirname(__FILE__) . '/../../../videos/configuration.php';
class Users_affiliations extends ObjectYPT {
protected $id, $users_id_company, $users_id_affiliate, $status, $company_agree_date, $affiliate_agree_date;
static function getSearchFieldsNames() {
return array();
}
static function getTableName() {
return 'users_affiliations';
}
static function getAllUsers($companyOnly = false) {
if ($companyOnly) {
$isCompany = User::$is_company_status_ISACOMPANY;
} else {
$isCompany = User::$is_company_status_NOTCOMPANY;
}
$rows = User::getAllUsers(false, ['name', 'email', 'user', 'channelName', 'about'], 'a', null, $isCompany);
return $rows;
}
function setId($id) {
$this->id = intval($id);
}
function setUsers_id_company($users_id_company) {
$this->users_id_company = intval($users_id_company);
}
function setUsers_id_affiliate($users_id_affiliate) {
$this->users_id_affiliate = intval($users_id_affiliate);
}
function setStatus($status) {
$this->status = $status;
}
function setCompany_agree_date($company_agree_date) {
$this->company_agree_date = $company_agree_date;
}
function setAffiliate_agree_date($affiliate_agree_date) {
$this->affiliate_agree_date = $affiliate_agree_date;
}
function getId() {
return intval($this->id);
}
function getUsers_id_company() {
return intval($this->users_id_company);
}
function getUsers_id_affiliate() {
return intval($this->users_id_affiliate);
}
function getStatus() {
return $this->status;
}
function getCompany_agree_date() {
return $this->company_agree_date;
}
function getAffiliate_agree_date() {
return $this->affiliate_agree_date;
}
public static function getAll($users_id_company = 0, $users_id_affiliate = 0, $activeOnly = false) {
global $global;
if (!static::isTableInstalled()) {
return false;
}
$users_id_company = intval($users_id_company);
$users_id_affiliate = intval($users_id_affiliate);
$sql = "SELECT * FROM " . static::getTableName() . " WHERE 1=1 ";
if (!empty($users_id_company)) {
$sql .= "AND users_id_company = $users_id_company ";
}
if (!empty($users_id_affiliate)) {
$sql .= "AND users_id_affiliate = $users_id_affiliate ";
}
if (!empty($activeOnly)) {
$sql .= "AND status = 'a' ";
}
//$sql .= self::getSqlFromPost();
$res = sqlDAL::readSql($sql);
$fullData = sqlDAL::fetchAllAssoc($res);
sqlDAL::close($res);
$rows = [];
if ($res !== false) {
foreach ($fullData as $row) {
if ($row['company_agree_date'] === '0000-00-00 00:00:00') {
$row['company_agree_date'] = null;
}
if ($row['affiliate_agree_date'] === '0000-00-00 00:00:00') {
$row['affiliate_agree_date'] = null;
}
$row['company'] = User::getNameIdentificationById($row['users_id_company']);
$row['affiliate'] = User::getNameIdentificationById($row['users_id_affiliate']);
$rows[] = $row;
}
} else {
//die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error);
}
return $rows;
}
public static function getTotal($users_id_company = 0, $users_id_affiliate = 0, $activeOnly = false) {
//will receive
//current=1&rowCount=10&sort[sender]=asc&searchPhrase=
global $global;
if (!static::isTableInstalled()) {
return 0;
}
$sql = "SELECT id FROM " . static::getTableName() . " WHERE 1=1 ";
if (!empty($users_id_company)) {
$sql .= "AND users_id_company = $users_id_company ";
}
if (!empty($users_id_affiliate)) {
$sql .= "AND users_id_affiliate = $users_id_affiliate ";
}
if (!empty($activeOnly)) {
$sql .= "AND status = 'a' ";
}
//$sql .= self::getSqlSearchFromPost();
$res = sqlDAL::readSql($sql);
$countRow = sqlDAL::num_rows($res);
sqlDAL::close($res);
return $countRow;
}
public function save() {
global $global;
if (empty($this->id) && !empty($this->users_id_company) && !empty($this->users_id_affiliate)) {
$row = self::getAll($this->users_id_company, $this->users_id_affiliate);
//var_dump($row);
if (!empty($row)) {
foreach ($row as $value) {
if (!empty($value['id'])) {
$this->id = $value['id'];
break;
}
}
}
}
if (empty($this->company_agree_date) || $this->company_agree_date == '0000-00-00 00:00:00' || $this->company_agree_date == 'NULL') {
$this->company_agree_date = null;
}
if (empty($this->affiliate_agree_date) || $this->affiliate_agree_date == '0000-00-00 00:00:00' || $this->affiliate_agree_date == 'NULL') {
$this->affiliate_agree_date = null;
}
$icon = 'fas fa-user-friends';
$href = "{$global['webSiteRootURL']}user?tab=tabAffiliation";
//var_dump($this);exit;
if (!empty($this->id) && empty($this->company_agree_date) && empty($this->affiliate_agree_date)) {
_error_log('Affiliation: both dates are empty, delete ' . $this->id);
return self::deleteFromID($this->id);
} else if (!empty($this->company_agree_date) && !empty($this->affiliate_agree_date)) {
_error_log('Affiliation: both dates are NOT empty, make it active ' . $this->id);
// $this->users_id_company $this->users_id_affiliate
$this->status = 'a';
$title = __('Affiliation Confirmed');
$type = UserNotifications::type_success;
$msg = __('Affiliation approved');
} else {
_error_log('Affiliation: one date is empty ' . $this->id . " company_agree_date={$this->company_agree_date} affiliate_agree_date={$this->affiliate_agree_date}");
$this->status = 'i';
$title = __('Affiliation Updated');
$type = UserNotifications::type_warning;
$msg = __('You have a new affiliation request');
}
if (empty($this->company_agree_date) || $this->company_agree_date == '0000-00-00 00:00:00') {
$this->company_agree_date = 'NULL';
}
if (empty($this->affiliate_agree_date) || $this->affiliate_agree_date == '0000-00-00 00:00:00') {
$this->affiliate_agree_date = 'NULL';
}
if (empty($this->users_id_affiliate)) {
$this->users_id_affiliate = 'NULL';
}
if (empty($this->users_id_company)) {
$this->users_id_company = 'NULL';
}
$id = parent::save();
if (!empty($id)) {
$sendTo = array(array($this->users_id_company, $this->users_id_affiliate), array($this->users_id_affiliate, $this->users_id_company));
foreach ($sendTo as $key => $value) {
$identification = User::getNameIdentificationById($value[0]);
$image = User::getPhoto($value[0], false, true);
$element_id = "affiliation_a{$value[0]}_b{$value[1]}_{$this->modified}";
$to_users_id = $value[1];
$msg .= " <strong>{$identification}</strong> ";
UserNotifications::createNotification($title, $msg, $to_users_id, $image, $href, $type, $element_id, $icon);
}
}
return $id;
}
static public function deleteFromID($id) {
$id = intval($id);
global $global;
if (!empty($id)) {
$sql = "DELETE FROM users_affiliations ";
$sql .= " WHERE id = ?";
$global['lastQuery'] = $sql;
_error_log("Delete Query: " . $sql);
return sqlDAL::writeSql($sql, "i", [$id]);
}
_error_log("Id for table " . static::getTableName() . " not defined for deletion " . json_encode(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)), AVideoLog::$ERROR);
return false;
}
static function canEditAffiliation($Users_affiliations_id) {
$Users_affiliations_id = intval($Users_affiliations_id);
if (empty($Users_affiliations_id)) {
return false;
}
if (User::isAdmin()) {
return true;
}
if (!User::isLogged()) {
return false;
}
$o = new Users_affiliations($Users_affiliations_id);
if (empty($o->getStatus())) {
return false;
}
if ($o->getUsers_id_affiliate() != User::getId() && $o->getUsers_id_company() != User::getId()) {
return false;
}
return true;
}
static function isUserAffiliateOrCompanyToEachOther($users_id1, $users_id2) {
$row = self::getAll($users_id1, $users_id2, true);
if (!empty($row)) {
foreach ($row as $value) {
if (!empty($value['id'])) {
return $value;
}
}
}
$row = self::getAll($users_id2, $users_id1, true);
//var_dump($row);
if (!empty($row)) {
foreach ($row as $value) {
if (!empty($value['id'])) {
return $value;
}
}
}
return false;
}
}