group_name = $group_name; } else { // get data from id $this->load($id); } } private function load($id) { $user = self::getUserGroupsDb($id); if (empty($user)) return false; foreach ($user as $key => $value) { $this->$key = $value; } } static private function getUserGroupsDb($id) { global $global; $id = intval($id); $sql = "SELECT * FROM users_groups WHERE id = ? LIMIT 1"; $res = sqlDAL::readSql($sql, "i", array($id)); $data = sqlDAL::fetchAssoc($res); sqlDAL::close($res); if (!empty($data)) { $user = $data; } else { $user = false; } return $user; } function save() { global $global; if (empty($this->isAdmin)) { $this->isAdmin = "false"; } $formats = ""; $values = array(); $this->group_name = _substr($this->group_name, 0, 255); if (!empty($this->id)) { $sql = "UPDATE users_groups SET group_name = ?, modified = now() WHERE id = ?"; $formats = "si"; $values = array($this->group_name,$this->id); } else { $sql = "INSERT INTO users_groups ( group_name, created, modified) VALUES (?,now(), now())"; $formats = "s"; $values = array($this->group_name); } if(sqlDAL::writeSql($sql,$formats,$values)){ if (empty($this->id)) { $id = $global['mysqli']->insert_id; } else { $id = $this->id; } return $id; } else { return false; } } function delete() { if (!User::isAdmin()) { return false; } global $global; if (!empty($this->id)) { $sql = "DELETE FROM users_groups WHERE id = ?"; } else { return false; } return sqlDAL::writeSql($sql,"i",array($this->id)); } private function getUserGroup($id) { global $global; $id = intval($id); $sql = "SELECT * FROM users_groups WHERE id = ? LIMIT 1"; $res = sqlDAL::readSql($sql, "i", array($id)); $data = sqlDAL::fetchAssoc($res); sqlDAL::close($res); if (!empty($data)) { $category = $data; } else { $category = false; } return $category; } static function getAllUsersGroups() { global $global; $sql = "SELECT *," . " (SELECT COUNT(*) FROM videos_group_view WHERE users_groups_id = ug.id ) as total_videos, " . " (SELECT COUNT(*) FROM users_has_users_groups WHERE users_groups_id = ug.id ) as total_users " . " FROM users_groups as ug WHERE 1=1 "; $sql .= BootGrid::getSqlFromPost(array('group_name')); $res = sqlDAL::readSql($sql); $fullData = sqlDAL::fetchAllAssoc($res); sqlDAL::close($res); $arr = array(); if ($res!=false) { foreach ($fullData as $row) { $arr[] = $row; } //$category = $res->fetch_all(MYSQLI_ASSOC); } else { $arr = false; die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error); } return $arr; } static function getAllUsersGroupsArray() { global $global; $sql = "SELECT * FROM users_groups as ug WHERE 1=1 "; $res = sqlDAL::readSql($sql); $fullData = sqlDAL::fetchAllAssoc($res); sqlDAL::close($res); $arr = array(); if ($res!=false) { foreach ($fullData as $row) { $arr[$row['id']] = $row['group_name']; } //$category = $res->fetch_all(MYSQLI_ASSOC); } else { $arr = false; die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error); } return $arr; } static function getTotalUsersGroups() { global $global; $sql = "SELECT id FROM users_groups WHERE 1=1 "; $sql .= BootGrid::getSqlSearchFromPost(array('group_name')); $res = sqlDAL::readSql($sql); $numRows = sqlDAL::num_rows($res); sqlDAL::close($res); return $numRows; } function getGroup_name() { return $this->group_name; } function setGroup_name($group_name) { $this->group_name = $group_name; } static function getUserGroupByName($group_name, $refreshCache = false) { global $global; $sql = "SELECT * FROM users_groups WHERE group_name = ? LIMIT 1"; $res = sqlDAL::readSql($sql, "s", array($group_name),$refreshCache); $data = sqlDAL::fetchAssoc($res); sqlDAL::close($res); if (!empty($data)) { $category = $data; } else { $category = false; } return $category; } static function getOrCreateUserGroups($group_name){ $group_name = trim($group_name); $group_name = _substr($group_name, 0, 255); if(empty($group_name)){ return false; } $group = self::getUserGroupByName($group_name, true); if(empty($group)){ $g = new UserGroups(0, $group_name); return $g->save(); }else{ return $group['id']; } } // for users static function updateUserGroups($users_id, $array_groups_id, $byPassAdmin=false, $mergeWithCurrentUserGroups=false){ if (!$byPassAdmin && !Permissions::canAdminUsers()) { return false; } if (!is_array($array_groups_id)) { return false; } if($mergeWithCurrentUserGroups){ $current_user_groups = self::getUserGroups($users_id); foreach ($current_user_groups as $value) { if(!in_array($value['id'], $array_groups_id)){ $array_groups_id[] = $value['id']; } } } self::deleteGroupsFromUser($users_id, true); global $global; $array_groups_id = array_unique($array_groups_id); $sql = "INSERT INTO users_has_users_groups ( users_id, users_groups_id) VALUES (?,?)"; foreach ($array_groups_id as $value) { $value = intval($value); if(empty($value)){ continue; } sqlDAL::writeSql($sql,"ii",array($users_id,$value)); } return true; } static function getAlUserGroupsFromUser($users_id) { return self::getUserGroups($users_id); } static function getUserGroups($users_id) { global $global; $res = sqlDAL::readSql("SHOW TABLES LIKE 'users_has_users_groups'"); $result = sqlDAL::num_rows($res); sqlDAL::close($res); if (empty($result)) { $_GET['error'] = "You need to update your system to ver 2.3"; return array(); } if (empty($users_id)) { return array(); } $sql = "SELECT uug.*, ug.* FROM users_groups ug" . " LEFT JOIN users_has_users_groups uug ON users_groups_id = ug.id WHERE users_id = ? "; $ids = AVideoPlugin::getDynamicUserGroupsId($users_id); if(!empty($ids) && is_array($ids)){ $ids = array_unique($ids); $sql .= " OR ug.id IN ('". implode("','", $ids)."') "; } //var_dump($ids);echo $sql;exit; $res = sqlDAL::readSql($sql,"i",array($users_id)); $fullData = sqlDal::fetchAllAssoc($res); sqlDAL::close($res); $arr = array(); $doNotRepeat = array(); if ($res!=false) { foreach ($fullData as $row) { if(in_array($row['id'], $doNotRepeat)){ continue; } $row = cleanUpRowFromDatabase($row); $doNotRepeat[] = $row['id']; $arr[] = $row; } } else { $arr = false; die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error); } return $arr; } static private function deleteGroupsFromUser($users_id, $byPassAdmin=false){ if (!$byPassAdmin && !User::isAdmin()) { return false; } global $global; if (!empty($users_id)) { $sql = "DELETE FROM users_has_users_groups WHERE users_id = ?"; } else { return false; } return sqlDAL::writeSql($sql,"i",array($users_id)); } static function getVideoGroupsViewId($videos_id, $users_groups_id) { if(empty($videos_id)){ return false; } if(empty($users_groups_id)){ return false; } global $global; $sql = "SELECT id FROM videos_group_view WHERE videos_id = ? AND users_groups_id = ? LIMIT 1 "; $res = sqlDAL::readSql($sql,"ii",array($videos_id, $users_groups_id)); $data = sqlDAL::fetchAssoc($res); sqlDAL::close($res); if (!empty($data)) { return $data['id']; } else { return 0; } } static function addVideoGroups($videos_id, $users_groups_id) { if (!User::canUpload()) { return false; } global $global; if(self::getVideoGroupsViewId($videos_id, $users_groups_id)){ return false; } $sql = "INSERT INTO videos_group_view ( videos_id, users_groups_id) VALUES (?,?)"; $value = intval($value); $response = sqlDAL::writeSql($sql,"ii",array($videos_id,$users_groups_id)); if($response){ Video::clearCache($videos_id); } return $response; } static function deleteVideoGroups($videos_id, $users_groups_id) { if (!User::canUpload()) { return false; } $sql = "DELETE FROM videos_group_view WHERE videos_id = ? AND users_groups_id = ?"; $response = sqlDAL::writeSql($sql,"ii",array($videos_id, $users_groups_id)); if($response){ Video::clearCache($videos_id); } return $response; } static function updateVideoGroups($videos_id, $array_groups_id, $mergeWithCurrentUserGroups=false) { if (!User::canUpload()) { return false; } if (!is_array($array_groups_id)) { return false; } if($mergeWithCurrentUserGroups){ $current_user_groups = self::getVideoGroups($videos_id); foreach ($current_user_groups as $value) { if(!in_array($value['id'], $array_groups_id)){ $array_groups_id[] = $value['id']; } } } self::deleteGroupsFromVideo($videos_id); global $global; $sql = "INSERT INTO videos_group_view ( videos_id, users_groups_id) VALUES (?,?)"; foreach ($array_groups_id as $value) { $value = intval($value); sqlDAL::writeSql($sql,"ii",array($videos_id,$value)); } return true; } static function getVideoGroups($videos_id) { if(empty($videos_id)){ return array(); } global $global; //check if table exists if not you need to update $sql = "SELECT 1 FROM `videos_group_view` LIMIT 1"; $res = sqlDAL::readSql($sql); sqlDAL::close($res); if (!$res) { if (User::isAdmin()) { $_GET['error'] = "You need to Update AVideo to version 2.3 Click here"; } return array(); } $sql = "SELECT v.*, ug.*FROM videos_group_view as v " . " LEFT JOIN users_groups as ug ON users_groups_id = ug.id WHERE videos_id = ? "; $res = sqlDAL::readSql($sql,"i",array($videos_id)); $fullData = sqlDAL::fetchAllAssoc($res); sqlDAL::close($res); $arr = array(); if ($res!=false) { foreach ($fullData as $row) { $row = cleanUpRowFromDatabase($row); $arr[] = $row; } } else { $arr = false; die($sql . '\nError : (' . $global['mysqli']->errno . ') ' . $global['mysqli']->error); } return $arr; } static private function deleteGroupsFromVideo($videos_id){ if (!User::canUpload()) { return false; } global $global; if (!empty($videos_id)) { $sql = "DELETE FROM videos_group_view WHERE videos_id = ?"; } else { return false; } return sqlDAL::writeSql($sql,"i",array($videos_id)); } }