123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209 |
- <?php
- define('GROUP_PERMISSION_OPEN' , '1');
- define('GROUP_PERMISSION_CLOSED', '2');
- define('GROUP_USER_PERMISSION_ADMIN' ,'1');
- define('GROUP_USER_PERMISSION_READER' ,'2');
- define('GROUP_USER_PERMISSION_PENDING_INVITATION' ,'3');
- define('GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER' ,'4');
- define('GROUP_USER_PERMISSION_MODERATOR' ,'5');
- define('GROUP_USER_PERMISSION_ANONYMOUS' ,'6');
- class GroupPortalManager
- {
-
- public static function add($name, $description, $url, $visibility, $picture='')
- {
- $tms = time();
- $table = Database :: get_main_table(TABLE_MAIN_GROUP);
- $sql = "INSERT INTO $table
- SET name = '".Database::escape_string($name)."',
- description = '".Database::escape_string($description)."',
- picture_uri = '".Database::escape_string($picture)."',
- url = '".Database::escape_string($url)."',
- visibility = '".Database::escape_string($visibility)."',
- created_on = FROM_UNIXTIME(".$tms."),
- updated_on = FROM_UNIXTIME(".$tms.")";
- $result = Database::query($sql, __FILE__, __LINE__);
- $return = Database::insert_id();
- return $return;
- }
-
- public static function update($group_id, $name, $description, $url, $visibility, $picture_uri)
- {
- $group_id = intval($group_id);
- $table = Database::get_main_table(TABLE_MAIN_GROUP);
- $tms = time();
- $sql = "UPDATE $table
- SET name = '".Database::escape_string($name)."',
- description = '".Database::escape_string($description)."',
- picture_uri = '".Database::escape_string($picture_uri)."',
- url = '".Database::escape_string($url)."',
- visibility = '".Database::escape_string($visibility)."',
- updated_on = FROM_UNIXTIME(".$tms.")
- WHERE id = '$group_id'";
- $result = Database::query($sql, __FILE__, __LINE__);
- return $result;
- }
-
- public static function delete($id)
- {
- $id = intval($id);
- $table = Database :: get_main_table(TABLE_MAIN_GROUP);
- $sql= "DELETE FROM $table WHERE id = ".Database::escape_string($id);
- $result = Database::query($sql, __FILE__, __LINE__);
-
- self::delete_users($id);
-
- self::delete_group_picture($id);
- return $result;
- }
-
- public static function url_count()
- {
- $table_access_url= Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
- $sql = "SELECT count(id) as count_result FROM $table_access_url";
- $res = Database::query($sql, __FILE__, __LINE__);
- $url = Database::fetch_array($res,'ASSOC');
- $result = $url['count_result'];
- return $result;
- }
-
-
- public static function get_all_group_data($visibility = GROUP_PERMISSION_OPEN, $from=0, $number_of_items=10)
- {
- $table = Database :: get_main_table(TABLE_MAIN_GROUP);
- $visibility = intval($visibility);
- $user_condition = '';
- $sql = "SELECT name, description, picture_uri FROM $table WHERE visibility = $visibility ";
- $res = Database::query($sql, __FILE__, __LINE__);
- $data = array ();
- while ($item = Database::fetch_array($res)) {
- $data[] = $item;
- }
- return $data;
- }
-
-
- public static function get_group_data($group_id)
- {
- $table = Database :: get_main_table(TABLE_MAIN_GROUP);
- $group_id = intval($group_id);
- $user_condition = '';
- $sql = "SELECT id, name, description, picture_uri, url, visibility FROM $table WHERE id = $group_id ";
- $res = Database::query($sql, __FILE__, __LINE__);
- $item = array();
- if (Database::num_rows($res)>0) {
- $item = Database::fetch_array($res,'ASSOC');
- }
- return $item;
- }
-
-
- public static function get_group_tags($group_id, $show_tag_links = true)
- {
- $tag = Database :: get_main_table(TABLE_MAIN_TAG);
- $table_group_rel_tag = Database :: get_main_table(TABLE_MAIN_GROUP_REL_TAG);
- $group_id = intval($group_id);
- $user_condition = '';
-
- $sql = "SELECT tag FROM $tag t INNER JOIN $table_group_rel_tag gt ON (gt.tag_id= t.id) WHERE gt.group_id = $group_id ";
- $res = Database::query($sql, __FILE__, __LINE__);
- $tags = array();
- if (Database::num_rows($res)>0) {
- while ($row = Database::fetch_array($res,'ASSOC')) {
- $tags[] = $row;
- }
- }
-
- if ($show_tag_links == true) {
- if (is_array($tags) && count($tags)>0) {
- foreach ($tags as $tag) {
- $tag_tmp[] = '<a href="'.api_get_path(WEB_PATH).'main/social/search.php?q='.$tag['tag'].'">'.$tag['tag'].'</a>';
- }
- if (is_array($tags) && count($tags)>0) {
- $tags= implode(', ',$tag_tmp);
- }
- } else {
- $tags = '';
- }
- }
- return $tags;
- }
-
- public static function get_groups_by_user($user_id='', $relation_type = GROUP_USER_PERMISSION_READER, $with_image = false)
- {
- $where = '';
- $table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $tbl_group = Database::get_main_table(TABLE_MAIN_GROUP);
- $user_id = intval($user_id);
-
- if ($relation_type == 0) {
- $where_relation_condition = '';
- } else {
- $relation_type = intval($relation_type);
- $where_relation_condition = "AND gu.relation_type = $relation_type ";
- }
-
- $sql = "SELECT g.picture_uri, g.name, g.description, g.id , gu.relation_type
- FROM $tbl_group g
- INNER JOIN $table_group_rel_user gu
- ON gu.group_id = g.id WHERE gu.user_id = $user_id $where_relation_condition ORDER BY created_on desc ";
-
- $result=Database::query($sql,__FILE__,__LINE__);
- $array = array();
- if (Database::num_rows($result) > 0) {
- while ($row = Database::fetch_array($result, 'ASSOC')) {
- if ($with_image == true) {
- $picture = self::get_picture_group($row['id'], $row['picture_uri'],80);
- $img = '<img src="'.$picture['file'].'" />';
- $row['picture_uri'] = $img;
- }
- $array[$row['id']] = $row;
- }
- }
- return $array;
- }
-
-
- public static function get_groups_by_popularity($num = 6, $with_image = true)
- {
- $where = '';
- $table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $tbl_group = Database::get_main_table(TABLE_MAIN_GROUP);
- if (empty($num)) {
- $num = 6;
- } else {
- $num = intval($num);
- }
-
- $where_relation_condition = " WHERE gu.relation_type IN ('".GROUP_USER_PERMISSION_ADMIN."' , '".GROUP_USER_PERMISSION_READER."') ";
-
- $sql = "SELECT count(user_id) as count, g.picture_uri, g.name, g.description, g.id
- FROM $tbl_group g
- INNER JOIN $table_group_rel_user gu
- ON gu.group_id = g.id $where_relation_condition GROUP BY g.id ORDER BY count DESC LIMIT $num";
-
- $result=Database::query($sql,__FILE__,__LINE__);
- $array = array();
- while ($row = Database::fetch_array($result, 'ASSOC')) {
- if ($with_image == true) {
- $picture = self::get_picture_group($row['id'], $row['picture_uri'],80);
- $img = '<img src="'.$picture['file'].'" />';
- $row['picture_uri'] = $img;
- }
- $array[$row['id']] = $row;
- }
- return $array;
- }
-
-
- public static function get_groups_by_age($num = 6, $with_image = true)
- {
- $where = '';
- $table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $tbl_group = Database::get_main_table(TABLE_MAIN_GROUP);
- if (empty($num)) {
- $num = 6;
- } else {
- $num = intval($num);
- }
- $sql = "SELECT g.picture_uri, g.name, g.description, g.id
- FROM $tbl_group g
- ORDER BY created_on desc LIMIT $num ";
-
- $result=Database::query($sql,__FILE__,__LINE__);
- $array = array();
- while ($row = Database::fetch_array($result, 'ASSOC')) {
- if ($with_image == true) {
- $picture = self::get_picture_group($row['id'], $row['picture_uri'],80);
- $img = '<img src="'.$picture['file'].'" />';
- $row['picture_uri'] = $img;
- }
- $array[$row['id']] = $row;
- }
- return $array;
- }
-
-
- public static function get_users_by_group($group_id, $with_image = false, $relation_type = array(), $from = 0, $limit = 15, $image_conf = array('size'=>'medium_','height'=>80))
- {
- $where = '';
- $table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
- $group_id = intval($group_id);
- $from = intval($from);
- $limit = intval($limit);
-
- if (empty($group_id)){
- return array();
- }
-
- if (empty($limit)) {
- $limit = 15;
- }
- if (empty($from)) {
- $from = 0;
- }
-
- if (count($relation_type) == 0) {
- $where_relation_condition = '';
- } else {
- $new_relation_type = array();
- foreach($relation_type as $rel) {
- $rel = intval($rel);
- $new_relation_type[] ="'$rel'";
- }
- $relation_type = implode(',', $new_relation_type);
- $where_relation_condition = "AND gu.relation_type IN ($relation_type) ";
- }
-
- $sql="SELECT picture_uri as image, u.user_id, u.firstname, u.lastname, relation_type FROM $tbl_user u
- INNER JOIN $table_group_rel_user gu
- ON (gu.user_id = u.user_id) WHERE gu.group_id= $group_id $where_relation_condition ORDER BY relation_type, firstname LIMIT $from, $limit";
-
- $result=Database::query($sql,__FILE__,__LINE__);
- $array = array();
- while ($row = Database::fetch_array($result, 'ASSOC')) {
- $image_path = UserManager::get_user_picture_path_by_id($row['user_id'], 'web', false, true);
- $user_profile = UserManager::get_picture_user($row['user_id'], $image_path['file'], 60, 'medium_');
- if ($with_image == true) {
- $picture = UserManager::get_picture_user($row['user_id'], $row['picture_uri'],$image_conf['height'],$image_conf['size']);
- $row['image'] = '<img src="'.$user_profile['file'].'" '.$picture['style'].' width="60" height="60"/>';
- }
- $array[$row['user_id']] = $row;
- }
- return $array;
- }
-
-
- public static function get_all_users_by_group($group_id)
- {
- $table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
- $group_id = intval($group_id);
-
- if (empty($group_id)){
- return array();
- }
- $sql="SELECT u.user_id, u.firstname, u.lastname, relation_type FROM $tbl_user u
- INNER JOIN $table_group_rel_user gu
- ON (gu.user_id = u.user_id) WHERE gu.group_id= $group_id ORDER BY relation_type, firstname";
-
- $result=Database::query($sql,__FILE__,__LINE__);
- $array = array();
- while ($row = Database::fetch_array($result, 'ASSOC')) {
- $array[$row['user_id']] = $row;
- }
- return $array;
- }
-
-
- public static function get_url_rel_course_data($access_url_id='')
- {
- $where ='';
- $table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
- $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
- if (!empty($access_url_id))
- $where ="WHERE $table_url_rel_course.access_url_id = ".Database::escape_string($access_url_id);
- $sql="SELECT course_code, title, access_url_id
- FROM $tbl_course u
- INNER JOIN $table_url_rel_course
- ON $table_url_rel_course.course_code = code
- $where
- ORDER BY title, code";
- $result=Database::query($sql,__FILE__,__LINE__);
- $courses=Database::store_result($result);
- return $courses;
- }
-
- public static function get_url_rel_session_data($access_url_id='')
- {
- $where ='';
- $table_url_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
- $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
- if (!empty($access_url_id))
- $where ="WHERE $table_url_rel_session.access_url_id = ".Database::escape_string($access_url_id);
- $sql="SELECT id, name, access_url_id
- FROM $tbl_session u
- INNER JOIN $table_url_rel_session
- ON $table_url_rel_session.session_id = id
- $where
- ORDER BY name, id";
- $result=Database::query($sql,__FILE__,__LINE__);
- $sessions=Database::store_result($result);
- return $sessions;
- }
-
- public static function set_url_status($status, $url_id)
- {
- $url_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
- if ($status=='lock') {
- $status_db='0';
- }
- if ($status=='unlock') {
- $status_db='1';
- }
- if(($status_db=='1' OR $status_db=='0') AND is_numeric($url_id)) {
- $sql="UPDATE $url_table SET active='".Database::escape_string($status_db)."' WHERE id='".Database::escape_string($url_id)."'";
- $result = Database::query($sql, __FILE__, __LINE__);
- }
- }
-
-
- public static function get_user_group_role($user_id, $group_id)
- {
- $table_group_rel_user= Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $return_value = 0;
- if (!empty($user_id) && !empty($group_id)) {
- $sql = "SELECT relation_type FROM $table_group_rel_user WHERE group_id = ".intval($group_id)." AND user_id = ".intval($user_id)." ";
- $result = Database::query($sql, __FILE__, __LINE__);
- if (Database::num_rows($result)>0) {
- $row = Database::fetch_array($result,'ASSOC');
- $return_value = $row['relation_type'];
- }
- }
- return $return_value;
- }
-
-
- public static function relation_url_course_exist($course_id, $url_id)
- {
- $table_url_rel_course= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
- $sql= "SELECT course_code FROM $table_url_rel_course WHERE access_url_id = ".Database::escape_string($url_id)." AND course_code = '".Database::escape_string($course_id)."'";
- $result = Database::query($sql, __FILE__, __LINE__);
- $num = Database::num_rows($result);
- return $num;
- }
-
- public static function add_user_to_group($user_id, $group_id, $relation_type = GROUP_USER_PERMISSION_READER)
- {
- $table_url_rel_group = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
- if (!empty($user_id) && !empty($group_id)) {
- $role = self::get_user_group_role($user_id,$group_id);
- if ($role == 0) {
- $sql = "INSERT INTO $table_url_rel_group
- SET user_id = ".intval($user_id).", group_id = ".intval($group_id).", relation_type = ".intval($relation_type);
- $result = Database::query($sql, __FILE__, __LINE__);
- } elseif($role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
-
- self::update_user_role($user_id, $group_id, GROUP_USER_PERMISSION_READER);
- }
- }
- return $result;
- }
-
-
-
- public static function add_users_to_groups($user_list, $group_list, $relation_type = GROUP_USER_PERMISSION_READER) {
- $table_url_rel_group = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $result_array = array();
- $relation_type = intval($relation_type);
-
- if (is_array($user_list) && is_array($group_list)) {
- foreach ($group_list as $group_id) {
- foreach ($user_list as $user_id) {
- $role = self::get_user_group_role($user_id,$group_id);
- if ($role == 0) {
- $sql = "INSERT INTO $table_url_rel_group
- SET user_id = ".intval($user_id).", group_id = ".intval($group_id).", relation_type = ".intval($relation_type)."";
-
-
- $result = Database::query($sql, __FILE__, __LINE__);
- if ($result)
- $result_array[$group_id][$user_id]=1;
- else
- $result_array[$group_id][$user_id]=0;
- }
- }
- }
- }
- return $result_array;
- }
-
- public static function delete_users($group_id,$relation_type='')
- {
- $table_ = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $condition_relation = "";
- if (!empty($relation_type)) {
- $condition_relation = " AND relation_type = '$relation_type'";
- }
- $sql = "DELETE FROM $table_ WHERE group_id = ".intval($group_id).$condition_relation;
- $result = Database::query($sql, __FILE__, __LINE__);
- return $result;
- }
-
- public static function delete_user_rel_group($user_id, $group_id)
- {
- $table = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $sql= "DELETE FROM $table WHERE user_id = ".intval($user_id)." AND group_id=".intval($group_id)." ";
- $result = Database::query($sql, __FILE__, __LINE__);
- return $result;
- }
-
- public static function update_urls_rel_user($user_list,$access_url_id)
- {
- $table_access_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
- $table_url_rel_user = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
- $sql = "SELECT user_id FROM $table_url_rel_user WHERE access_url_id=".Database::escape_string($access_url_id);
- $result = Database::query($sql,__FILE__,__LINE__ );
- $existingUsers = array();
- while($row = Database::fetch_array($result)){
- $existingUsers[] = $row['user_id'];
- }
-
- foreach($user_list as $enreg_user) {
- if(!in_array($enreg_user, $existingUsers)) {
- UrlManager::add_user_to_url($enreg_user,$access_url_id);
- }
- }
-
- foreach($existingUsers as $existing_user) {
- if(!in_array($existing_user, $user_list)) {
- UrlManager::delete_url_rel_user($existing_user,$access_url_id);
- }
- }
- }
-
-
- public static function update_user_role($user_id, $group_id, $relation_type = GROUP_USER_PERMISSION_READER)
- {
- $table_group_rel_user = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $group_id = intval($group_id);
- $user_id = intval($user_id);
-
- $sql = "UPDATE $table_group_rel_user
- SET relation_type = ".intval($relation_type)." WHERE user_id = $user_id AND group_id = $group_id" ;
- $result = Database::query($sql, __FILE__, __LINE__);
- }
-
-
- public static function get_group_admin_list($user_id, $group_id)
- {
- $table_group_rel_user = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
- $group_id = intval($group_id);
- $user_id = intval($user_id);
-
- $sql = "SELECT user_id FROM $table_group_rel_user WHERE
- relation_type = ".GROUP_USER_PERMISSION_ADMIN." AND user_id = $user_id AND group_id = $group_id" ;
- $result = Database::query($sql, __FILE__, __LINE__);
- }
-
-
-
- public static function update_urls_rel_course($course_list,$access_url_id)
- {
- $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
- $table_url_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
- $sql = "SELECT course_code FROM $table_url_rel_course WHERE access_url_id=".Database::escape_string($access_url_id);
- $result = Database::query($sql,__FILE__,__LINE__ );
- $existing_courses = array();
- while($row = Database::fetch_array($result)){
- $existing_courses[] = $row['course_code'];
- }
-
- foreach($course_list as $course) {
- if(!in_array($course, $existing_courses)) {
- UrlManager::add_course_to_url($course,$access_url_id);
- }
- }
-
- foreach($existing_courses as $existing_course) {
- if(!in_array($existing_course, $course_list)) {
- UrlManager::delete_url_rel_course($existing_course,$access_url_id);
- }
- }
- }
-
- public static function get_access_url_from_user($user_id) {
- $table_url_rel_user = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
- $table_url = Database :: get_main_table(TABLE_MAIN_ACCESS_URL);
- $sql = "SELECT url, access_url_id FROM $table_url_rel_user url_rel_user INNER JOIN $table_url u
- ON (url_rel_user.access_url_id = u.id)
- WHERE user_id = ".Database::escape_string($user_id);
- $result = Database::query($sql, __FILE__, __LINE__);
- $url_list = Database::store_result($result);
- return $url_list;
- }
-
- public static function get_all_group_tags($tag, $from=0, $number_of_items=10) {
-
-
- $group_table = Database::get_main_table(TABLE_MAIN_GROUP);
- $table_tag = Database::get_main_table(TABLE_MAIN_TAG);
- $table_group_tag_values = Database::get_main_table(TABLE_MAIN_GROUP_REL_TAG);
-
-
-
- $field_id = 5;
- $tag = Database::escape_string($tag);
- $from = intval($from);
- $number_of_items = intval($number_of_items);
-
- $sql = "SELECT g.id, g.name, g.description, g.picture_uri FROM $table_tag t INNER JOIN $table_group_tag_values tv ON (tv.tag_id=t.id)
- INNER JOIN $group_table g ON(tv.group_id =g.id)
- WHERE tag LIKE '$tag%' AND field_id= $field_id ORDER BY tag";
-
- $sql .= " LIMIT $from,$number_of_items";
-
- $result = Database::query($sql, __FILE__, __LINE__);
- $return = array();
- if (Database::num_rows($result)> 0) {
- while ($row = Database::fetch_array($result,'ASSOC')) {
- $return[$row['id']] = $row;
- }
- }
-
- $keyword = $tag;
- $sql = "SELECT g.id, g.name, g.description, g.url, g.picture_uri FROM $group_table g";
-
-
-
-
-
-
-
- if (isset ($keyword)) {
- $keyword = Database::escape_string($keyword);
- $sql .= " WHERE (g.name LIKE '%".$keyword."%' OR g.description LIKE '%".$keyword."%' OR g.url LIKE '%".$keyword."%' )";
- }
-
- $direction = 'ASC';
- if (!in_array($direction, array('ASC','DESC'))) {
- $direction = 'ASC';
- }
-
- $column = intval($column);
- $from = intval($from);
- $number_of_items = intval($number_of_items);
-
-
- $sql .= " LIMIT $from,$number_of_items";
- $res = Database::query($sql, __FILE__, __LINE__);
- if (Database::num_rows($res)> 0) {
- while ($row = Database::fetch_array($res,'ASSOC')) {
- if (!in_array($row['id'], $return)) {
- $return[$row['id']] = $row;
- }
- }
- }
- return $return;
- }
-
-
-
- public static function update_group_picture($group_id, $file = null, $source_file = null) {
-
- if (empty($group_id)) {
- return false;
- }
- $delete = empty($file);
- if (empty($source_file)) {
- $source_file = $file;
- }
-
- require_once api_get_path(CONFIGURATION_PATH).'profile.conf.php';
-
- $path_info = self::get_group_picture_path_by_id($group_id, 'system', true);
- $path = $path_info['dir'];
-
- if (!file_exists($path)) {
- $perm = api_get_setting('permissions_for_new_directories');
- $perm = octdec(!empty($perm) ? $perm : '0770');
- @mkdir($path, $perm, true);
- }
-
- $old_file = $path_info['file'];
-
- if (!empty($old_file)) {
- if (KEEP_THE_OLD_IMAGE_AFTER_CHANGE) {
- $prefix = 'saved_'.date('Y_m_d_H_i_s').'_'.uniqid('').'_';
- @rename($path.'small_'.$old_file, $path.$prefix.'small_'.$old_file);
- @rename($path.'medium_'.$old_file, $path.$prefix.'medium_'.$old_file);
- @rename($path.'big_'.$old_file, $path.$prefix.'big_'.$old_file);
- @rename($path.$old_file, $path.$prefix.$old_file);
- } else {
- @unlink($path.'small_'.$old_file);
- @unlink($path.'medium_'.$old_file);
- @unlink($path.'big_'.$old_file);
- @unlink($path.$old_file);
- }
- }
-
- if ($delete) {
- return '';
- }
-
- $allowed_types = array('jpg', 'jpeg', 'png', 'gif');
- $file = str_replace('\\', '/', $file);
- $filename = (($pos = strrpos($file, '/')) !== false) ? substr($file, $pos + 1) : $file;
- $extension = strtolower(substr(strrchr($filename, '.'), 1));
- if (!in_array($extension, $allowed_types)) {
- return false;
- }
-
- if (KEEP_THE_NAME_WHEN_CHANGE_IMAGE && !empty($old_file)) {
- $old_extension = strtolower(substr(strrchr($old_file, '.'), 1));
- $filename = in_array($old_extension, $allowed_types) ? substr($old_file, 0, -strlen($old_extension)) : $old_file;
- $filename = (substr($filename, -1) == '.') ? $filename.$extension : $filename.'.'.$extension;
- } else {
- $filename = replace_dangerous_char($filename);
- if (PREFIX_IMAGE_FILENAME_WITH_UID) {
- $filename = uniqid('').'_'.$filename;
- }
-
-
-
- $filename = $group_id.'_'.$filename;
- }
-
- $picture_info = @getimagesize($source_file);
- $type = $picture_info[2];
- $small = self::resize_picture($source_file, 22);
- $medium = self::resize_picture($source_file, 85);
- $normal = self::resize_picture($source_file, 200);
- $big = new image($source_file);
- $ok = false;
- $detected = array(1 => 'GIF', 2 => 'JPG', 3 => 'PNG');
- if (in_array($type, array_keys($detected))) {
- $ok = $small->send_image($detected[$type], $path.'small_'.$filename)
- && $medium->send_image($detected[$type], $path.'medium_'.$filename)
- && $normal->send_image($detected[$type], $path.$filename)
- && $big->send_image($detected[$type], $path.'big_'.$filename);
- }
- return $ok ? $filename : false;
- }
-
-
- public static function get_group_picture_path_by_id($id, $type = 'none', $preview = false, $anonymous = false) {
- switch ($type) {
- case 'system':
- $base = api_get_path(SYS_CODE_PATH);
- break;
- case 'rel':
- $base = api_get_path(REL_CODE_PATH);
- break;
- case 'web':
- $base = api_get_path(WEB_CODE_PATH);
- break;
- case 'none':
- default:
- $base = '';
- }
- if (empty($id) || empty($type)) {
- return $anonymous ? array('dir' => $base.'img/', 'file' => 'unknown.jpg') : array('dir' => '', 'file' => '');
- }
- $id = intval($id);
- $group_table = Database :: get_main_table(TABLE_MAIN_GROUP);
- $sql = "SELECT picture_uri FROM $group_table WHERE id=".$id;
- $res = Database::query($sql, __FILE__, __LINE__);
- if (!Database::num_rows($res)) {
- return $anonymous ? array('dir' => $base.'img/', 'file' => 'unknown.jpg') : array('dir' => '', 'file' => '');
- }
- $user = Database::fetch_array($res);
- $picture_filename = trim($user['picture_uri']);
- if (api_get_setting('split_users_upload_directory') === 'true') {
- if (!empty($picture_filename)) {
- $dir = $base.'upload/users/groups/'.substr($picture_filename, 0, 1).'/'.$id.'/';
- } elseif ($preview) {
- $dir = $base.'upload/users/groups/'.substr((string)$id, 0, 1).'/'.$id.'/';
- } else {
- $dir = $base.'upload/users/groups/'.$id.'/';
- }
- } else {
- $dir = $base.'upload/users/groups/'.$id.'/';
- }
- if (empty($picture_filename) && $anonymous) {
- return array('dir' => $base.'img/', 'file' => 'unknown.jpg');
- }
- return array('dir' => $dir, 'file' => $picture_filename);
- }
-
-
- public static function resize_picture($file, $max_size_for_picture) {
- if (!class_exists('image')) {
- require_once api_get_path(LIBRARY_PATH).'image.lib.php';
- }
- $temp = new image($file);
- $picture_infos = api_getimagesize($file);
- if ($picture_infos[0] > $max_size_for_picture) {
- $thumbwidth = $max_size_for_picture;
- if (empty($thumbwidth) or $thumbwidth == 0) {
- $thumbwidth = $max_size_for_picture;
- }
- $new_height = round(($thumbwidth / $picture_infos[0]) * $picture_infos[1]);
- if ($new_height > $max_size_for_picture)
- $new_height = $thumbwidth;
- $temp->resize($thumbwidth, $new_height, 0);
- }
- return $temp;
- }
-
-
- public static function get_picture_group($id, $picture_file, $height, $size_picture = 'medium_', $style = '') {
- $patch_profile = 'upload/users/groups/';
- $picture = array();
- $picture['style'] = $style;
- if ($picture_file == 'unknown.jpg') {
- $picture['file'] = api_get_path(WEB_CODE_PATH).'img/'.$picture_file;
- return $picture;
- }
- $image_array_sys = self::get_group_picture_path_by_id($id, 'system', false, true);
- $image_array = self::get_group_picture_path_by_id($id, 'web', false, true);
- $file = $image_array_sys['dir'].$size_picture.$picture_file;
- if (file_exists($file)) {
- $picture['file'] = $image_array['dir'].$size_picture.$picture_file;
- $picture['style'] = '';
- if ($height > 0) {
- $dimension = api_getimagesize($picture['file']);
- $margin = (($height - $dimension[1]) / 2);
-
- $picture['style'] = ' style="padding-top:'.$margin.'px; width:'.$dimension[0].'px; height:'.$dimension[1].';" ';
- }
- } else {
-
- $file = $image_array_sys['dir'].$picture_file;
- if (file_exists($file) && !is_dir($file)) {
- $picture['file'] = $image_array['dir'].$picture_file;
- } else {
- $picture['file'] = api_get_path(WEB_CODE_PATH).'img/unknown_group.png';
- }
- }
- return $picture;
- }
-
- public static function delete_group_picture($group_id) {
- return self::update_group_picture($group_id);
- }
-
-
- public static function is_group_admin($group_id, $user_id = 0) {
- if (empty($user_id)) {
- $user_id = api_get_user_id();
- }
- $user_role = GroupPortalManager::get_user_group_role($user_id, $group_id);
- if (in_array($user_role, array(GROUP_USER_PERMISSION_ADMIN))) {
- return true;
- } else {
- return false;
- }
- }
-
- public static function is_group_moderator($group_id, $user_id = 0) {
- if (empty($user_id)) {
- $user_id = api_get_user_id();
- }
- $user_role = GroupPortalManager::get_user_group_role($user_id, $group_id);
- if (in_array($user_role, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR))) {
- return true;
- } else {
- return false;
- }
- }
-
- public static function is_group_member($group_id, $user_id = 0) {
- if (empty($user_id)) {
- $user_id = api_get_user_id();
- }
- $user_role = GroupPortalManager::get_user_group_role($user_id, $group_id);
- if (in_array($user_role, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR, GROUP_USER_PERMISSION_READER))) {
- return true;
- } else {
- return false;
- }
- }
-
- public static function show_group_column_information($group_id, $user_id) {
-
- $group_info = GroupPortalManager::get_group_data($group_id);
- $picture = GroupPortalManager::get_picture_group($group_id, $group_info['picture_uri'],160,'medium_');
- $big_image = GroupPortalManager::get_picture_group($group_id, $group_info['picture_uri'],'','big_');
-
- $tags = GroupPortalManager::get_group_tags($group_id, true);
- $members = GroupPortalManager::get_users_by_group($group_id, true);
-
- $my_group_role = self::get_user_group_role($user_id, $group_id);
-
-
- echo '<style>
- #group_members { width:233px; height:300px; overflow-x:none; overflow-y: auto;}
- .group_member_item { width:98px; height:86px; float:left; margin:5px 5px 15px 5px; }
- .group_member_picture { display:block;
- margin:0;
- overflow:hidden; };
- </style>';
- echo '<div id="layout-left" style="float: left; width: 270px; height: 100%;">';
-
-
- echo '<h1><a href="groups.php?id='.$group_id.'">'.$group_info['name'].'</a></h1>';
-
-
- echo '<div id="group_image">';
-
- if (basename($picture['file']) != 'unknown_group.png') {
- echo '<a class="thickbox" href="'.$big_image['file'].'"><img src='.$picture['file'].' /> </a><br /><br />';
- } else {
- echo '<img src='.$picture['file'].' /><br /><br />';
- }
-
- echo '</div>';
-
-
- echo '<div id="group_description">';
- echo $group_info['description'];
- echo '</div>';
-
-
- echo '<div id="group-url">';
- echo $group_info['url'];
- echo '</div>';
-
-
- echo '<div id="group_privacy">';
- echo get_lang('Privacy').' : ';
- if ($group_info['visibility']== GROUP_PERMISSION_OPEN) {
- echo get_lang('ThisIsAnOpenGroup');
- } elseif ($group_info['visibility']== GROUP_PERMISSION_CLOSED) {
- echo get_lang('ThisIsACloseGroup');
- }
- echo '</div>';
-
-
- if (!empty($tags)) {
- echo '<div id="group_tags">';
- echo get_lang('Tags').' : '.$tags;
- echo '</div>';
- }
-
-
-
- echo '<div id="group_permissions" class="actions">';
- echo '<ul>';
-
- switch ($my_group_role) {
- case GROUP_USER_PERMISSION_READER:
-
- echo get_lang('IamAReader');
-
- echo '<li><a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('message_new.png', get_lang('NewTopic')).' '.get_lang('NewTopic').'</a></li>';
- echo '<li><a href="groups.php?id='.$group_id.'">'. Display::return_icon('notebook.gif', get_lang('MessageList')).' '.get_lang('MessageList').'</a></li>';
- echo '<li><a href="group_invitation.php?id='.$group_id.'">'. Display::return_icon('login_as.gif', get_lang('InviteFriends')).' '.get_lang('InviteFriends').'</a></li>';
- echo '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.get_lang('LeaveGroup').'</a></li>';
-
- break;
- case GROUP_USER_PERMISSION_ADMIN:
- echo get_lang('IamAnAdmin');
- echo '<li><a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('message_new.png', get_lang('NewTopic')).' '.get_lang('NewTopic').'</a></li>';
-
- echo '<li><a href="groups.php?id='.$group_id.'">'. Display::return_icon('notebook.gif', get_lang('MessageList')).' '.get_lang('MessageList').'</a></li>';
- echo '<li><a href="group_edit.php?id='.$group_id.'">'. Display::return_icon('edit.gif', get_lang('EditGroup')).' '.get_lang('EditGroup').'</a></li>';
- echo '<li><a href="group_members.php?id='.$group_id.'">'. Display::return_icon('coachs.gif', get_lang('MemberList')).' '.get_lang('MemberList').'</a></li>';
-
- if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED) {
- echo '<li><a href="group_waiting_list.php?id='.$group_id.'">'. Display::return_icon('group_na.gif', get_lang('WaitingList')).' '.get_lang('WaitingList').'</a></li>';
- }
- echo '<li><a href="group_invitation.php?id='.$group_id.'">'. Display::return_icon('login_as.gif', get_lang('InviteFriends')).' '.get_lang('InviteFriends').'</a></li>';
-
- break;
- case GROUP_USER_PERMISSION_PENDING_INVITATION:
- echo '<li><a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('YouHaveBeenInvitedJoinNow').'</a></li>';
- break;
- case GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER:
- echo get_lang('WaitingForAdminResponse');
- break;
- case GROUP_USER_PERMISSION_MODERATOR:
- echo get_lang('IamAModerator');
- echo '<li><a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('message_new.png', get_lang('NewTopic')).' '.get_lang('NewTopic').'</a></li>';
-
- echo '<li><a href="groups.php?id='.$group_id.'">'. Display::return_icon('notebook.gif', get_lang('MessageList')).' '.get_lang('MessageList').'</a></li>';
- echo '<li><a href="group_members.php?id='.$group_id.'">'. Display::return_icon('coachs.gif', get_lang('MemberList')).' '.get_lang('MemberList').'</a></li>';
-
- if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED) {
- echo '<li><a href="group_waiting_list.php?id='.$group_id.'">'. Display::return_icon('group_na.gif', get_lang('WaitingList')).' '.get_lang('WaitingList').'</a></li>';
- }
- echo '<li><a href="group_invitation.php?id='.$group_id.'">'. Display::return_icon('login_as.gif', get_lang('InviteFriends')).' '.get_lang('InviteFriends').'</a></li>';
-
- break;
- default:
- echo '<li><a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a></li>';
- break;
- }
- echo '</ul>';
- echo '</div>';
-
-
-
- echo get_lang('Members').' : ';
- echo '<div id="group_members">';
- foreach($members as $member) {
-
- if (in_array($member['relation_type'] , array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER,GROUP_USER_PERMISSION_MODERATOR))) {
-
- if ($member['relation_type'] == GROUP_USER_PERMISSION_ADMIN) {
- $member['lastname'].= Display::return_icon('admin_star.png', get_lang('Admin'));
- }
- if ($member['relation_type'] == GROUP_USER_PERMISSION_MODERATOR) {
- $member['lastname'].= Display::return_icon('moderator_star.png', get_lang('Moderator'));
- }
- echo '<div class="group_member_item"><a href="profile.php?u='.$member['user_id'].'">';
- echo '<div class="group_member_picture">'.$member['image'].'</div>';
- echo api_get_person_name($member['firstname'], $member['lastname']).'</a></div>';
- }
- }
- if (count($members) > 15) {
-
- echo '<div class="group_member_more"><a href="group_members.php?id='.$group_id.'">';
- echo get_lang('More').'</a></div>';
- }
-
-
- echo '</div>';
- echo '</div>';
- }
- }
- ?>
|