<?php
define('__NET_GROUPS__', NET_route()->com . 'NETGroups/');
/* Include group class and library */
require_once(__NET_GROUPS__ . 'classes/NETGroup.php');
require_once(__NET_GROUPS__ . 'libraries/groups.php');
/**
// Initialize Groups Component * * @return void; * @access private //function NET_groups() { //group css NET_extend_view('css/NET.default', 'css/groups'); //group js NET_extend_view('js/opensource.socialnetwork', 'js/groups'); //group pages NET_register_page('group', 'NET_group_page'); NET_register_page('groups', 'NET_groups_page'); NET_group_subpage('members'); NET_group_subpage('edit'); NET_group_subpage('requests'); //group hooks NET_add_hook('group', 'subpage', 'group_members_page'); NET_add_hook('group', 'subpage', 'group_edit_page'); NET_add_hook('group', 'subpage', 'group_requests_page'); NET_add_hook('newsfeed', "left", 'NET_add_groups_to_newfeed'); NET_add_hook('search', 'type:groups', 'groups_search_handler'); NET_add_hook('notification:add', 'comments:post:group:wall', 'NET_notificaiton_groups_comments_hook'); NET_add_hook('notification:add', 'like:post:group:wall', 'NET_notificaiton_groups_comments_hook'); NET_add_hook('notification:view', 'group:joinrequest', 'NET_group_joinrequest_notification'); //group actions if(NET_isLoggedin()) { NET_register_action('group/add', __NET_GROUPS__ . 'actions/group/add.php'); NET_register_action('group/edit', __NET_GROUPS__ . 'actions/group/edit.php'); NET_register_action('group/join', __NET_GROUPS__ . 'actions/group/join.php');NET_register_action('group/delete', __NET_GROUPS__ . 'actions/group/delete.php'); NET_register_action('group/member/approve', __NET_GROUPS__ . 'actions/group/member/request/approve.php'); NET_register_action('group/member/cancel', __NET_GROUPS__ . 'actions/group/member/request/cancel.php'); NET_register_action('group/member/decline', __NET_GROUPS__ . 'actions/group/member/request/decline.php'); NET_register_action('group/cover/upload', __NET_GROUPS__ . 'actions/group/cover/upload.php'); NET_register_action('group/cover/reposition', __NET_GROUPS__ . 'actions/group/cover/reposition.php'); } //callbacks NET_register_callback('page', 'load:group', 'NET_group_load_event'); NET_register_callback('page', 'load:search', 'NET_group_search_link'); NET_register_callback('user', 'delete', 'NET_user_groups_delete'); //group list in newsfeed sidebar mebu $groups_user = NET_get_user_groups(NET_loggedin_user()); if($groups_user) { foreach($groups_user as $group) { $icon = NET_site_url('components/NETGroups/images/group.png'); NET_register_sections_menu('newsfeed', array( 'text' => $group->title, 'url' => NET_group_url($group->guid), 'section' => 'groups', 'icon' => $icon )); unset($icon); } } //add gorup link in sidebar NET_register_sections_menu('newsfeed', array( 'text' => NET_print('add:group'), 'url' => 'javascript:void(0);', 'params' => array( 'id' => 'NET-group-add' ), 'section' => 'groups', 'icon' => NET_site_url('components/NETGroups/images/add.png') )); //my groups link /* NET_register_sections_menu('newsfeed', array( 'text' => 'My Groups', 'url' => 'javascript:void(0);', 'section' => 'groups', 'icon' => NET_site_url('components/NETGroups/images/manages.png') ));*/ }/** * Group search page handler * * @return mixdata; * @access private */function groups_search_handler($hook, $type, $return, $params) { $Pagination = new NETPagination; $groups = new NETGroup; $data = $groups->searchGroups($params['q']); $Pagination->setItem($data); $group['groups'] = $Pagination->getItem(); $search = NET_plugin_view('groups/search/view', $group); $search .= $Pagination->pagination(); if(empty($data)) { return NET_print('NET:search:no:result'); } return $search;}/** * Call event on group load * * @return void; * @access private */function NET_group_load_event($event, $type, $params) { $owner = NET_get_page_owner_guid(); $url = NET_site_url(); NET_register_menu_link('members', 'members', NET_group_url($owner) . 'members', 'groupheader');}/** * Add search group link on search page * * @return void; * @access private */function NET_group_search_link($event, $type, $params) { $url = NETPagination::constructUrlArgs(array( 'type' )); NET_register_menu_link('groups', 'groups', "search?type=groups{$url}", 'search');}/** * Groups page handler * * Pages: * groups/ * groups/add ( ajax ) * @return mixdata; * @access private */function NET_groups_page($pages) { $page = $pages[0]; if(empty($page)) { return false; } switch($page) { case 'add': $params = array( 'action' => NET_site_url() . 'action/group/add', 'component' => 'NETGroups', 'class' => 'NET-form' ); $form = NET_view_form('add', $params, false); echo NET_plugin_view('output/NETbox', array( 'title' => NET_print('add:group'), 'contents' => $form, 'callback' => '#NET-group-submit' )); break; case 'cover': if(isset($pages[1]) && !empty($pages[1])) { $File = new NETFile; $File->file_id = $pages[1]; $File = $File->fetchFile(); $etag = $File->guid . $File->time_created; if(isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == "\"$etag\"") { header("HTTP/1.1 304 Not Modified"); exit; } if(isset($File->guid)) { $Cover = NET_get_userdata("object/{$File->owner_guid}/{$File->value}"); $filesize = filesize($Cover); header("Content-type: image/jpeg"); header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true); header("Pragma: public"); header("Cache-Control: public"); header("Content-Length: $filesize"); header("ETag: \"$etag\""); readfile($Cover); return; } else { NET_error_page(); } } break; default: echo NET_error_page(); break; }}/** * Group page handler * This page also contain subpages like group/<guid>/members * * Pages: * group/<guid> * group/<guid>/<subpage> * Subpage need to be register seperatly. * * @return mixdata; * @access private */function NET_group_page($pages) { if(empty($pages[0])) { NET_error_page(); } if(!empty($pages[0]) && !empty($pages[0])) { if(isset($pages[1])) { $params['subpage'] = $pages[1]; } else { $params['subpage'] = ''; } if(!NET_is_group_subapge($params['subpage']) && !empty($params['subpage'])) { return false; } $group = NET_get_group_by_guid($pages[0]); if(empty($group->guid)) { NET_error_page(); } NET_set_page_owner_guid($group->guid); NET_trigger_callback('page', 'load:group'); $params['group'] = $group; $title = $group->title; $view = NET_plugin_view('groups/pages/profile', $params); $contents['content'] = NET_group_layout($view); $content = NET_set_page_layout('contents', $contents); echo NET_view_page($title, $content); }}/** * Group member page * * Page: * group/<guid>/member * * @return mixdata; * @access private */function group_members_page($hook, $type, $return, $params) { $page = $params['subpage']; if($page == 'members') { $mod_content = NET_plugin_view('groups/pages/members', $params); $mod = array( 'title' => NET_print('members'), 'content' => $mod_content ); echo NET_set_page_layout('module', $mod); }}/** * Group edit page * * Page: * group/<guid>/edit * * @return mixdata; * @access private */function group_edit_page($hook, $type, $return, $params) { $page = $params['subpage']; $group = NET_get_group_by_guid(NET_get_page_owner_guid()); if($group->owner_guid !== NET_loggedin_user()->guid && !NET_isAdminLoggedin()) { return false; } if($page == 'edit') { $params = array( 'action' => NET_site_url() . 'action/group/edit', 'component' => 'NETGroups', 'class' => 'NET-edit-form', 'params' => array( 'group' => $group ) ); $form = NET_view_form('edit', $params, false); echo NET_set_page_layout('module', array( 'title' => NET_print('edit'), 'content' => $form )); }}/** * Group member requests page * * Page: * group/<guid>/requests * * @return mixdata; * @access private */function group_requests_page($hook, $type, $return, $params) { $page = $params['subpage']; $group = NET_get_group_by_guid(NET_get_page_owner_guid()); if($page == 'requests') { if($group->owner_guid !== NET_loggedin_user()->guid && !NET_isAdminLoggedin()) { redirect("group/{$group->guid}"); } $mod_content = NET_plugin_view('groups/pages/requests', array( 'group' => $group )); $mod = array( 'title' => NET_print('requests'), 'content' => $mod_content ); echo NET_set_page_layout('module', $mod); }}/** * Group delete callback * * @param string $callback Callback name * @param string $type Callback type * @param array Callback data * * @return void; * @access private */function NET_user_groups_delete($callback, $type, $params) { $deleteGroup = new NETGroup; $groups = $deleteGroup->getUserGroups($params['entity']->guid); if($groups) { foreach($groups as $group) { $deleteGroup->deleteGroup($group->guid); } }}/** * Group comments/likes notification hook * * @param string $hook Hook name * @param string $type Hook type * @param array Callback data * * @return array or false; * @access public */function NET_notificaiton_groups_comments_hook($hook, $type, $return, $params) { $object = new NETObject; $object->object_guid = $params['subject_guid']; $object = $object->getObjectById(); if($object) { $params['owner_guid'] = $object->poster_guid; return $params; } return false;}// #186 group join request hookfunction NET_group_joinrequest_notification($name, $type, $return, $params) { $baseurl = NET_site_url(); $user = NET_user_by_guid($params->poster_guid); $user->fullname = "<strong>{$user->fullname}</strong>"; $group = NET_get_group_by_guid($params->subject_guid); $img = "<div class='notification-image'><img src='{$baseurl}avatar/{$user->username}/small' /></div>"; $type = "<div class='NET-groups-notification-icon'></div>"; if($params->viewed !== NULL) { $viewed = ''; } elseif($params->viewed == NULL) { $viewed = 'class="NET-notification-unviewed"'; } // lead directly to groups request page $url = "{$baseurl}group/{$params->subject_guid}/requests"; $notification_read = "{$baseurl}notification/read/{$params->guid}?notification=" . urlencode($url); return "<a href='{$notification_read}' rel="nofollow noopener noreferrer" target="_blank" class='NET-group-notification-item'> <li {$viewed}> {$img} <div class='notfi-meta'> {$type} <div class='data'>" . NET_print("NET:notifications:{$params->type}", array( $user->fullname, $group->title )) . '</div> </div></li>';}NET_register_callback('NET', 'init', 'NET_groups');