/**
     Get data for moderation option ie group moderation
    **/
 private function get_links()
 {
     $Group = new Group();
     $Group->collection_id = $this->set_id;
     $Group->is_active = 1;
     $this->Paging["count"] = $Group->get_members($cnt = TRUE, '', '', '', '', TRUE);
     $members = $Group->get_members($cnt = FALSE, $this->Paging["show"], $this->Paging["page"], '', '', TRUE);
     $User = new User();
     foreach ($members as $membersDetails) {
         $User->load((int) $membersDetails["user_id"]);
         $this->members_data[] = array('user_id' => $membersDetails["user_id"], 'first_name' => $User->first_name, 'last_name' => $User->last_name, 'email' => $User->email, 'created' => $membersDetails['join_date'], 'picture' => $User->picture, 'user_type' => $membersDetails["user_type"], 'login_name' => $User->login_name);
     }
     return;
 }
function setup_module($column, $module, $obj)
{
    global $is_member, $is_admin, $group_data, $gid;
    $obj->gid = $gid;
    switch ($module) {
        case 'MembersFacewallModule':
            $group = new Group();
            $group->collection_id = $gid;
            $group->is_active = ACTIVE;
            $members = $group->get_members($cnt = FALSE, 5, 1, 'created', 'DESC', FALSE);
            if (is_array($members)) {
                $count = count($members);
                $group_members = members_to_array($members);
                $users_data = array();
                foreach ($members as $member) {
                    $count_relations = Relation::get_relations($member['user_id'], APPROVED, PA::$network_info->network_id);
                    $user = new User();
                    $user->load((int) $member['user_id']);
                    $login_name = $user->login_name;
                    $user_picture = $user->picture;
                    $users_data[] = array('user_id' => $member['user_id'], 'picture' => $user_picture, 'login_name' => $login_name, 'no_of_relations' => count($count_relations));
                }
                $users = array('users_data' => $users_data, 'total_users' => $count);
            }
            $obj->links = $users;
            $obj->gid = $gid;
            break;
        case 'ImagesModule':
            $obj->block_type = 'Gallery';
            $obj->page = 'grouppage';
            $obj->title = 'Group Gallery';
            $obj->group_details['collection_id'] = $group_data->collection_id;
            break;
        case 'GroupForumModule':
            if ($group_data->reg_type == REG_INVITE) {
                if (!$is_member && !$is_admin) {
                    return "skip";
                }
            }
            $obj->is_member = $is_member;
            $obj->is_admin = $is_admin;
            $obj->group_details = $group_data;
            break;
        case 'RecentPostModule':
            $obj->type = 'group';
            $obj->gid = $_REQUEST['gid'];
            break;
    }
}
Example #3
0
function setup_module($column, $module, $obj)
{
    global $group_data, $gid, $request_info, $is_edit, $edit_data, $member_type;
    $obj->gid = $gid;
    switch ($module) {
        case 'MembersFacewallModule':
            $group = new Group();
            $group->collection_id = $gid;
            $group->is_active = 1;
            $members = $group->get_members($cnt = FALSE, 5, 1, 'created', 'DESC', FALSE);
            if (is_array($members)) {
                $count = count($members);
                foreach ($members as $member) {
                    $count_relations = Relation::get_relations($member['user_id']);
                    $user = new User();
                    $user->load((int) $member['user_id']);
                    $login_name = $user->login_name;
                    $user_picture = $user->picture;
                    $users_data[] = array('user_id' => $member['user_id'], 'picture' => $user_picture, 'login_name' => $login_name, 'no_of_relations' => count($count_relations));
                }
                $users = array('users_data' => $users_data, 'total_users' => $count);
            }
            $obj->links = $users;
            $obj->gid = $gid;
            break;
        case 'ImagesModule':
            $obj->block_type = 'Gallery';
            $obj->page = 'grouppage';
            $obj->title = 'Group Gallery';
            break;
        case 'CreateForumTopicModule':
            if (!$is_edit) {
                return 'skip';
            }
            $obj->edit_data = $edit_data;
            $obj->is_edit = $is_edit;
            break;
    }
}
 function listAction()
 {
     $ids = sql_select('group', 'id');
     $this->groups = array();
     if (is_array($ids)) {
         foreach ($ids as $group) {
             $group = new Group($group['id']);
             $this->groups[$group->id]['name'] = $group->name;
             $members = $group->get_members();
             $this->groups[$group->id]['members'] = is_array($members) ? count($members) : 0;
             $feeds_res = sql_query('SELECT COUNT(id) as feeds FROM `feed` WHERE `group_id` = ' . $group->id);
             $this->groups[$group->id]['controls'] = NULL;
             if ($feeds_res) {
                 $num_feeds = sql_row_keyed($feeds_res, 0);
                 $num_feeds = $num_feeds['feeds'];
                 if ($num_feeds == 1) {
                     $this->groups[$group->id]['controls'][] = "1 feed";
                 } else {
                     if ($num_feeds > 1) {
                         $this->groups[$group->id]['controls'][] = $num_feeds . " feeds";
                     }
                 }
             }
             $screens_res = sql_query('SELECT COUNT(id) as screens FROM `screen` WHERE `group_id` = ' . $group->id);
             if ($screens_res) {
                 $num_screens = sql_row_keyed($screens_res, 0);
                 $num_screens = $num_screens['screens'];
                 if ($num_screens == 1) {
                     $this->groups[$group->id]['controls'][] = "1 screen";
                 } else {
                     if ($num_screens > 1) {
                         $this->groups[$group->id]['controls'][] = $num_screens . " screens";
                     }
                 }
             }
         }
     }
 }
 /**
     Get data for moderation option ie group moderation
    **/
 private function get_links()
 {
     $this->Paging["querystring"] = "view=members&gid={$this->set_id}";
     $Group = new Group();
     $Group->collection_id = $this->set_id;
     $Group->is_active = 1;
     $this->Paging["count"] = $Group->get_members($cnt = TRUE, '', '', '', '', FALSE);
     $members = $Group->get_members($cnt = FALSE, $this->Paging["show"], $this->Paging["page"], '', '', FALSE);
     $User = new User();
     foreach ($members as $membersDetails) {
         if ($membersDetails["user_type"] != 'owner') {
             $User->load((int) $membersDetails["user_id"]);
             $this->members_data[] = array('user_id' => $membersDetails["user_id"], 'first_name' => $User->first_name, 'last_name' => $User->last_name, 'email' => $User->email, 'created' => $membersDetails['join_date'], 'picture' => $User->picture, 'user_type' => $membersDetails["user_type"], 'login_name' => $User->login_name);
         }
     }
     //    echo "<pre>".print_r($this->members_data,1)."</pre>";
     return;
 }
/**
* print_group_selectbox
*
* prints selectbox with group name and with members list
*
* usage:
*	print_group_selectbox(array(
*		"group_id" => $top_group
*	));
*/
function print_group_selectbox()
{
    global $site;
    global $read_allowed_groups;
    global $all_levels;
    global $selected_parents;
    global $column_count;
    $args = func_get_arg(0);
    #printr($read_allowed_groups);
    #printr($selected_parents);
    $group_id = $args['group_id'];
    # group ID
    $level = $args['level'];
    # group ID
    ###### PERMISSIONS: show group selectbox if READ is allowed OR is superuser
    if ($group_id == '' || in_array($group_id, $read_allowed_groups) || $site->user->is_superuser) {
        ###### get group itself
        $group = new Group(array(group_id => $group_id));
        ###### get subgroups html
        #printr($all_levels[$level]);
        if (is_array($all_levels[$level])) {
            foreach ($all_levels[$level] as $tmpgroup) {
                # check parent (don-t check parent for evreybody) AND permission to read
                if ((in_array($tmpgroup['id'], $read_allowed_groups) || $site->user->is_superuser) && (!$tmpgroup['parent'] || in_array($tmpgroup['parent'], $selected_parents))) {
                    $role_selected = $level == 1 && $site->fdat['role_id'] ? true : false;
                    $options_html .= '<option value="group_id:' . $tmpgroup['id'] . '"' . ($group_id == $tmpgroup['id'] && !$role_selected ? ' selected' : '') . ">" . $tmpgroup['name'] . "</option>";
                }
                # if is child of selected parent
            }
            # is array
        }
        # foreach group in this level
        ########## members
        # get previous level (min is 1):
        $prev_level = $level > 1 ? $level - 1 : 1;
        ###### get members list of previous group (group in preceeding selectbox)
        $prev_group_id = $selected_parents[$prev_level - 1];
        if ($prev_group_id) {
            $prev_group = new Group(array(group_id => $prev_group_id));
            $members = $prev_group->get_members();
        }
        # print cell if found any subgroup OR any member
        if ($options_html || sizeof($members) > 0) {
            # keep record of global column count
            if ($column_count < $level) {
                $column_count = $level;
            }
            ?>
<TD>

<SELECT NAME="tmp_<?php 
            echo $group_id;
            ?>
" class="scms_flex_input" style="width:160px" onchange="javascript:select_acl(this.options[this.selectedIndex].value)">
	<?php 
            # print empty select (not for everybody)
            ########### CHOOSE
            if ($level != '1') {
                ?>
		<option value="">--- <?php 
                echo $site->sys_sona(array(sona => "vali", tyyp => "admin"));
                ?>
 ---</option>
	<?php 
            }
            ########### 1) ROLES: print roles only in the first selectbox (everybody)
            if ($level == '1') {
                $sqltmp = $site->db->prepare("SELECT * FROM roles ORDER BY name");
                $sthtmp = new SQL($sqltmp);
                ?>
		<optgroup label="<?php 
                echo $site->sys_sona(array(sona => "roles", tyyp => "kasutaja"));
                ?>
">
		<?php 
                while ($role = $sthtmp->fetch()) {
                    ?>
		<option value="role_id:<?php 
                    echo $role['role_id'];
                    ?>
" <?php 
                    echo $site->fdat['role_id'] == $role['role_id'] ? ' selected' : '';
                    ?>
><?php 
                    echo $role['name'];
                    ?>
</option>

<?php 
                }
                echo '</optgroup>';
            }
            ########### 2) GROUPS
            ?>
	<optgroup label="<?php 
            echo $site->sys_sona(array(sona => "groups", tyyp => "kasutaja"));
            ?>
">
	<?php 
            echo $options_html;
            echo '</optgroup>';
            ########### 3) MEMBERS: print if previous selectbox group ID found and not everybody
            if ($level != '1' && $prev_group_id) {
                ?>

	<optgroup label="<?php 
                echo $site->sys_sona(array(sona => "users", tyyp => "admin"));
                ?>
">
<?php 
                foreach ($members as $member) {
                    ?>
		<option value="user_id:<?php 
                    echo $member['user_id'];
                    ?>
" <?php 
                    echo $site->fdat['user_id'] == $member['user_id'] ? ' selected' : '';
                    ?>
><?php 
                    echo $member['firstname'];
                    ?>
 <?php 
                    echo $member['lastname'];
                    ?>
</option>
		<?php 
                }
                # while
                echo '</optgroup>';
            }
            # /if previous selectbox group ID found
            ?>
</SELECT>
<?php 
        }
        # print cell if found something
        ?>
</TD>
<?php 
    }
    # show group selectbox if READ is allowed OR is superuser
}
 function render()
 {
     $login_uid = @PA::$login_user->user_id;
     $this->gid = @$this->params['blog_id'];
     $this->blog_name = @$this->params['blog_name'];
     $this->note = '';
     if ($this->blog_name) {
         $this->find_or_create_blog();
     }
     if ($this->gid) {
         $this->type == 'group';
         $group = new Group();
         $group->collection_id = $this->gid;
         $group->load($this->gid);
         $this->group_member = Group::member_exists($group->collection_id, $login_uid) ? TRUE : FALSE;
         switch ($this->view) {
             case "recent_post":
                 // load content
                 $this->contents = $group->get_contents_for_collection($type = 'all', $cnt = FALSE, 1, 1, 'created', 'DESC');
                 $this->inner_template = 'recent_post.tpl';
                 break;
             case 'user':
                 // load content
                 if (@$this->params['cid']) {
                     // permalink, load only this one
                     $bp = new BlogPost();
                     try {
                         $bp->load((int) $this->params['cid']);
                         $this->count = 1;
                         $content = array();
                         foreach ($bp as $k => $v) {
                             $content[$k] = $v;
                         }
                         $this->contents[] = $content;
                     } catch (PAException $e) {
                         $this->err = __("Couldn't load BlogPost. ") . $e->getMessage();
                     }
                 } else {
                     $this->count = $group->get_contents_for_collection($type = 'all', $cnt = TRUE, 'all', 0, $sort_by = 'created', $direction = 'DESC');
                     $this->contents = $group->get_contents_for_collection($type = 'all', $cnt = FALSE, $this->show, $this->page, 'created', 'DESC');
                 }
                 break;
             case "admin":
                 $this->title = "Managing authors for " . $this->blog_name;
                 $this->inner_template = 'manageauthors.tpl';
                 // find members
                 $this->members = $group->get_members();
                 $this->member_count = count($this->members);
                 break;
         }
         // load Items for all BlogPosts -> for Comments to work
         foreach ($this->contents as $i => $post) {
             $item_params = array("type" => 'blogpost', "id" => $post['content_id'], "name" => $post['content_id'], "thumbnail" => "", "thumbnail_w" => "0", "thumbnail_h" => "0", "genres" => "blog", "url" => $this->blog_url . "?b_cid=" . $post['content_id']);
             Item::sync($item_params);
             // create or update row in 'items' database table
             $item = Item::find_by_subject('blogpost', $post['content_id']);
             $this->contents[$i]['comment_count'] = $item->comment_count;
         }
     } else {
         $this->err = __("No Blog found.");
     }
     $tmp_file = dirname(__FILE__) . "/" . $this->skin . "_" . $this->inner_template;
     $inner_html_gen =& new Template($tmp_file, $this);
     $this->inner_HTML = $inner_html_gen->fetch();
     $content = parent::render();
     return $content;
 }
 function initializeModule($request_method, $request_data)
 {
     if (empty($this->shared_data['group_info'])) {
         return 'skip';
     }
     $this->group_details = $this->shared_data['group_info'];
     if (empty($request_data['gid'])) {
         return 'skip';
     }
     // sanity check
     // we do this check only if the user is not already permitted to manage ads
     $gp_access = PermissionsHandler::can_group_user(PA::$login_uid, $request_data['gid'], array('permissions' => 'manage_groups'));
     if (!$gp_access) {
         return 'skip';
     }
     // user shoudn't have gotten here in the first place, just don't show anything
     $error_msg = false;
     if ($request_method == 'POST') {
         $value_to_validate = array('title' => 'Title', 'bulletin_body' => 'Bulletin body');
         foreach ($value_to_validate as $key => $value) {
             $request_data[$key] = trim($request_data[$key]);
             if (empty($request_data[$key])) {
                 $error_msg .= $value . ' can not be empty<br>';
             }
         }
         if (!$error_msg) {
             // if no errors yet
             $subject = $request_data['title'];
             $bull_message = $request_data['bulletin_body'];
             $group = new Group();
             $group->load($request_data['gid']);
             if (!empty($request_data['bulletins'])) {
                 // send to all members
                 $gms = $group->get_members();
                 foreach ($gms as $i => $m) {
                     $u = new User();
                     $u->load((int) $m['user_id']);
                     $to_members[] = $u;
                 }
             } else {
                 if (!empty($request_data['send_to_me_only'])) {
                     // test send to admin user
                     $to_members = array(PA::$login_user);
                 }
             }
             $this->sent_to = array();
             // send it
             if (!empty($to_members)) {
                 foreach ($to_members as $recipient) {
                     $this->sent_to[] = $recipient->display_name;
                     PANotify::send("group_bulletin_sent", $recipient, $group, array('bulletin.message' => $bull_message, 'bulletin.subject' => $subject));
                 }
             }
             // wannt a preview with that?
             if (!empty($request_data['preview'])) {
                 // if preview is selected.
                 $container_html = 'default_email_container.tpl';
                 $email_container = new Template('config/email_containers/' . $container_html);
                 $email_container->set('subject', $subject);
                 $email_container->set('message', $bull_message);
                 $this->preview_msg = $email_container->fetch();
             }
         }
     }
 }