public function initializeModule($request_method, $request_data)
 {
     if (empty($request_data['gid'])) {
         return 'skip';
     }
     $this->gid = $request_data['gid'];
     // NOTE:
     // The code bellow is temporrary solution and should be removed
     // when refactoring of all other pages that using this module
     // will be done!
     // ----------------------------------------------------------------------
     if (empty($this->shared_data['group_info']) && !empty($request_data['gid'])) {
         $group = ContentCollection::load_collection((int) $this->gid);
         $member_type = Group::get_user_type(PA::$login_uid, (int) $this->gid);
         $this->shared_data['member_type'] = $member_type;
         $this->shared_data['group_info'] = $group;
         $this->shared_data['members'] = Group::get_member_count((int) $this->gid);
         $owner = new User();
         $owner->load((int) Group::get_owner_id((int) $this->gid));
         $this->shared_data['author_picture'] = $owner->picture;
         $this->shared_data['author_name'] = $owner->login_name;
         $this->shared_data['access_type'] = $this->shared_data['group_info']->reg_type == $this->shared_data['group_info']->REG_OPEN ? ' Open' : ' Moderated';
     }
     // ----------------------------------------------------------------------
     switch ($this->page_id) {
         case PAGE_GROUP_THEME:
         case PAGE_GROUP_MODERATION:
         case PAGE_GROUP:
         case PAGE_SHOWCONTENT:
         case PAGE_PERMALINK:
             $this->group_details = $this->shared_data['group_info'];
             $this->group_details->author_picture = $this->shared_data['author_picture'];
             $this->group_details->author_name = $this->shared_data['author_name'];
             $this->group_details->members = $this->shared_data['members'];
             $this->access_type = $this->shared_data['access_type'];
             break;
         default:
             $this->group_details = $this->generate_group_links();
     }
 }
function auto_email_notification_members($activity_type, $params)
{
    if (!PA::$network_info) {
        return;
    }
    //setting common variables
    $notification = new EmailNotification();
    // mail to
    // FIXME: these two seemed not to be set in occasion
    $gid = @$params['gid'] ? $params['gid'] : @$_GET['gid'];
    $rid = @$params['related_uid'];
    if ($gid) {
        $network_owner_id = Group::get_owner_id($gid);
        $notification->network_owner = User::map_ids_to_logins($network_owner_id['user_id']);
        $group_owner = new User();
        $group_owner->load((int) $network_owner_id['user_id']);
        $notification->to = $group_owner->email;
        $group_owner_name = $group_owner->login_name;
        //mail from
        $notification->from = (int) PA::$login_uid;
        $array_of_data = array('to' => $notification->to, 'from' => $notification->from, 'owner_name' => $group_owner_name, 'group_owner_id' => $network_owner_id['user_id']);
    }
    if ($rid) {
        $notification->network_owner = User::map_ids_to_logins(array($rid));
        foreach ($notification->network_owner as $key => $value) {
            $rel_user = new User();
            $rel_user->load((int) $key);
            $related_name = $rel_user->login_name;
            $notification->to = $rel_user->email;
        }
        $notification->from = (int) PA::$login_uid;
        $array_of_data = array('to' => $notification->to, 'from' => $notification->from, 'related_name' => $related_name);
    }
    $array_of_data['params'] = $params;
    $notification->send($activity_type, $array_of_data);
}
 private function getGroupOwner()
 {
     $owner_id = Group::get_owner_id((int) $this->group->group_id);
     $group_owner = new User();
     $group_owner->load((int) $owner_id);
     return $group_owner;
 }
 private function buildStatistics($board)
 {
     $board_statistics = $board->getBoardStatistics();
     $statistics = array();
     $statistics['title'] = $board->get_title();
     $statistics['description'] = $board->get_description();
     $statistics['type'] = $board->get_type() . " board";
     $statistics['created_at'] = $board->get_created_at();
     switch ($board->get_type()) {
         case PaForumBoard::network_board:
             $net_id = $board->get_owner_id();
             if ($net_id == 1) {
                 // mother network - owner_id always is '1' !
                 $owner_id = 1;
             } else {
                 $owner_id = Network::get_network_owner((int) $board->get_owner_id());
             }
             break;
         case PaForumBoard::group_board:
             $owner_id = Group::get_owner_id((int) $board->get_owner_id());
             break;
         case PaForumBoard::personal_board:
             $owner_id = $board->get_owner_id();
             break;
     }
     $user = new User();
     $user->load((int) $owner_id);
     $statistics['owner'] = $user;
     $statistics['nb_categories'] = $board_statistics['nb_categories'];
     $nb_forums = 0;
     $nb_threads = 0;
     $nb_posts = 0;
     $threads = array();
     $last_posts = array();
     foreach ($board_statistics['categories'] as $category) {
         if ($category->statistics['nb_forums'] > 0) {
             $nb_forums += $category->statistics['nb_forums'];
             foreach ($category->statistics['forums'] as $forum) {
                 if (!empty($forum->statistics['threads']) and count($forum->statistics['threads']) > 0) {
                     foreach ($forum->statistics['threads'] as &$thr) {
                         $thr->forum = $forum;
                     }
                     $threads = array_merge($threads, $forum->statistics['threads']);
                     $nb_threads += $forum->statistics['nb_threads'];
                     $nb_posts += $forum->statistics['nb_posts'];
                     if (!empty($forum->statistics['last_post'])) {
                         $last_posts[] = $forum->statistics['last_post'];
                     }
                 }
             }
         }
     }
     if (count($threads) > 1) {
         usort($threads, "cmpThreadCreated");
     }
     $statistics['threads'] = $threads;
     $statistics['nb_forums'] = $nb_forums;
     $statistics['nb_threads'] = $nb_threads;
     $statistics['nb_posts'] = $nb_posts;
     $statistics['last_posts'] = $last_posts;
     $statistics['nb_users'] = PaForumsUsers::countPaForumsUsers("board_id = " . $board->get_id());
     return $statistics;
 }
 private function send_approval_message_to_user($uid, $gid, $approved)
 {
     $site_name = PA::$site_name;
     $user = new User();
     $user->load((int) $uid);
     $group = Group::load_group_by_id((int) $gid);
     $group_owner_id = Group::get_owner_id((int) $gid);
     $group_owner = new User();
     $group_owner->load((int) $group_owner_id['user_id']);
     $group_name = $group->title;
     $network_name = PA::$network_info->name;
     $group_member_count = Group::get_member_count((int) $gid);
     $group_owner_name = $group_owner->login_name;
     $group_joinee = $user->login_name;
     $group_url = '<a href="' . PA::$url . PA_ROUTE_GROUP . '/gid=' . $gid . '">' . $group->title . '</a>';
     $approved_msg = $approved ? 'has approved' : 'has not approved';
     $subject = "{$group_owner_name} {$approved_msg} your request to join the \"{$group_name}\" Group";
     $msg = "\n          <br />Dear {$group_joinee},\n          <br />\n          <br />\n          <b>{$group_owner_name}</b> {$approved_msg} your request to join the \"{$group_name}\" Group on the \"{$network_name}\" network.\n          <br />\n          To view the \"{$group_name}\" Group, click on the following link: {$group_url}\n          <br />\n          There are now {$group_member_count} members in the \"{$group_name}\" Group.\n          <br />\n          Thanks,\n          The {$site_name} Team\n          <br />\n          <p>\n          Everyone at {$site_name} respects your privacy. Your information will\n          never be shared with third parties unless specifically requested by you.\n          <p/>";
     Message::add_message((int) $group_owner_id['user_id'], null, $group_joinee, $subject, $msg);
     simple_pa_mail($user->email, $subject, $msg);
     return;
 }
 private function getBoardOwner($request_data)
 {
     switch ($this->board_type) {
         case PaForumBoard::network_board:
             $owner_id = Network::get_network_owner((int) $this->parent_id);
             break;
         case PaForumBoard::group_board:
             $group_owner = Group::get_owner_id((int) $this->parent_id);
             $owner_id = $group_owner['user_id'];
             break;
         case PaForumBoard::personal_board:
             $owner_id = (int) $this->parent_id;
             break;
     }
     $this->owner_id = $owner_id;
     $user = new User();
     $user->load((int) $owner_id);
     return $user;
 }
            // catch if delete is fail
        }
        $location = $_SERVER['HTTP_REFERER'];
        header("Location: {$location}");
        exit;
    }
} else {
    // When User wants to delete repllies of forum
    $mid = $_GET['mid'];
    $params['action'] = 'delete_rep';
    // fiding the parent for the replly
    $request_info = load_info();
    $msg = new MessageBoard();
    $rep_details = $msg->get_by_id($_REQUEST['mid']);
    $cond_array = array('boardmessage_id' => $request_info['parent_id']);
    $forum_detail = MessageBoard::get_forums($cond_array);
    $owner = Group::get_owner_id($_REQUEST['ccid']);
    $params['forum_owner'] = $forum_detail[0]->user_id;
    $params['rep_owner'] = $rep_details['user_id'];
    $params['group_owner'] = $owner['user_id'];
    if (user_can($params)) {
        try {
            MessageBoard::delete($mid);
        } catch (Exception $e) {
            // catch if delete is fail
        }
        $location = $_SERVER['HTTP_REFERER'];
        header("Location: {$location}");
        exit;
    }
}
Example #8
0
 /**
  * Saves Group data to database
  * @access public
  * @param int $user_id ID of the user trying to save
  */
 public function save($user_id = NULL)
 {
     Logger::log('Enter: Group::save() | Args: \\$user_id = ' . $user_id);
     if (!empty($user_id)) {
         $this->author_id = $user_id;
     }
     if (empty($this->title)) {
         Logger::log('Exit: Group::save(). Title of the group is not specified.');
         throw new PAException(GROUP_NAME_NOT_EXIST, 'Title of the group is not specified');
     }
     if (!isset($this->access_type)) {
         Logger::log('Exit: Group::save(). Access type for the group is not specifed');
         throw new PAException(GROUP_ACCESS_TYPE_NOT_EXIST, 'Access type for the group is not specifed');
     }
     if (!isset($this->reg_type)) {
         Logger::log('Exit: Group::save(). User registration type is not specified for the group.');
         throw new PAException(GROUP_REGISTRATION_TYPE_NOT_EXIST, 'User registration type is not specified for the group.');
     }
     if (!isset($this->is_moderated)) {
         Logger::log('Exit: Group::save(). Moderation type is not specifed for the group.');
         throw new PAException(GROUP_IS_MODERATED_NOT_EXIST, 'Moderation type is not specifed for the group.');
     }
     if (!empty($this->extra)) {
         $this->extra = serialize($this->extra);
     }
     //if collection_id exists the update else insert
     if ($this->collection_id) {
         //       $user_type = Group::get_user_type ($this->author_id, $this->collection_id);
         //       $access = $this->acl_object->acl_check( 'action', 'edit', 'users', $user_type, 'group', 'all' );
         $access = PermissionsHandler::can_group_user(Group::get_owner_id((int) $this->collection_id), $this->collection_id, array('permissions' => 'manage_groups'));
         if (!$access) {
             throw new PAException(OPERATION_NOT_PERMITTED, 'You are not authorized to edit this group.');
         }
         $sql = "UPDATE {groups} SET access_type = ?, reg_type = ?, is_moderated = ?, category_id = ? , header_image = ? , header_image_action = ?, display_header_image = ?, group_type =?, extra=? WHERE group_id = ?";
         try {
             $res = Dal::query($sql, array($this->access_type, $this->reg_type, $this->is_moderated, $this->category_id, $this->header_image, $this->header_image_action, $this->display_header_image, $this->group_type, @$this->extra, $this->collection_id));
             parent::save();
         } catch (Exception $e) {
             Dal::rollback();
             throw $e;
         }
     } else {
         //only registered user can create a group
         // This already has been taken care via session
         // we can add further modification if not use session user_id
         try {
             parent::save();
             $sql = "INSERT INTO {groups} (group_id, access_type, reg_type, is_moderated, category_id, header_image, header_image_action, display_header_image, group_type, extra) VALUES (?, ?, ?, ?, ?,?,?,?, ?, ?)";
             $data = array($this->collection_id, $this->access_type, $this->reg_type, $this->is_moderated, $this->category_id, $this->header_image, $this->header_image_action, $this->display_header_image, $this->group_type, @$this->extra);
             $res = Dal::query($sql, $data);
             $this->created = time();
             $sql = "INSERT INTO {groups_users} (group_id, user_id, user_type, created) VALUES (?, ?, ?, ?)";
             $res = Dal::query($sql, array($this->collection_id, $this->author_id, OWNER, $this->created));
             foreach ($this->moderators as $mod) {
                 $sql = "INSERT INTO {groups_users} (group_id, user_id, user_type, created) VALUES (?, ?, ?, ?)";
                 $res = Dal::query($sql, array($this->collection_id, $mod, MODERATOR, $this->created));
             }
             Dal::commit();
             // setup extra permissions for group owner
             // so, we need to assign group admin role to group owner now:
             $role_extra = array('user' => false, 'network' => false, 'groups' => array($this->collection_id));
             $user_roles[] = array('role_id' => GROUP_ADMIN_ROLE, 'extra' => serialize($role_extra));
             $group_owner = new User();
             $group_owner->load($this->author_id);
             $group_owner->set_user_role($user_roles);
         } catch (Exception $e) {
             Dal::rollback();
             throw $e;
         }
     }
     Logger::log("Exit: Group::save()");
     return $this->collection_id;
 }