/** * Approve a group * * @return void */ public function approveTask() { // Incoming $ids = Request::getVar('id', array()); // Get the single ID we're working with if (!is_array($ids)) { $ids = array($ids); } // Do we have any IDs? if (!empty($ids)) { // foreach group id passed in foreach ($ids as $id) { // Load the group page $group = new Group(); $group->read($id); // Ensure we found the group info if (!$group) { continue; } //set the group to be published and update $group->set('approved', 1); $group->update(); // log publishing Log::log(array('gidNumber' => $group->get('gidNumber'), 'action' => 'group_approved', 'comments' => 'approved by administrator')); } // Output messsage and redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller, false), Lang::txt('COM_GROUPS_APPROVED')); } }
/** * Delete Page Category * * @return void */ public function deleteTask() { // Check for request forgeries Request::checkToken(); if (!User::authorise('core.delete', $this->_option)) { App::abort(403, Lang::txt('JERROR_ALERTNOAUTHOR')); } // Get request vars $ids = Request::getVar('id', array()); $deleted = array(); // Delete each category foreach ($ids as $categoryid) { // Load category object $category = Category::oneOrFail($categoryid); // Make sure this is our groups cat if ($category->get('gidNumber') != $this->group->get('gidNumber')) { Notify::error(Lang::txt('COM_GROUPS_PAGES_CATEGORY_DELETE_FAILED')); continue; } // Delete row if (!$category->destroy()) { Notify::error($category->getError()); continue; } $deleted[] = $category->get('id'); } if (count($deleted)) { Notify::success(Lang::txt('COM_GROUPS_PAGES_CATEGORY_DELETE_SUCCESS')); // Log change Log::log(array('gidNumber' => $this->group->get('gidNumber'), 'action' => 'group_pagecategory_deleted', 'comments' => $deleted)); } $this->cancelTask(); }
/** * Approve a group page * * @return void */ public function approveTask() { // make sure we are approvers if (!Helpers\Pages::isPageApprover()) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_PAGES_MUST_BE_AUTHORIZED'), 'error'); return; } // get request vars $id = Request::getInt('id', 0); // load page $page = new Page($id); // load current version $currentVersion = $page->version(); // make sure version is unapproved if ($currentVersion->get('approved') == 1) { //inform user & redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_PAGES_ALREADY_APPROVED'), 'warning'); return; } // set approved and approved date and approver $currentVersion->set('approved', 1); $currentVersion->set('approved_on', Date::toSql()); $currentVersion->set('approved_by', User::get('id')); // save version with approved status if (!$currentVersion->store(false, $this->group->isSuperGroup())) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), $currentVersion->getError(), 'error'); return; } // send approved notifcation Helpers\Pages::sendApprovedNotification('page', $page); // log approval Log::log(array('gidNumber' => $this->group->get('gidNumber'), 'action' => 'group_page_approved', 'comments' => array($page->get('id')))); // inform user and redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_PAGES_APPROVED'), 'passed'); }
/** * Permanently delete group * * @return void */ public function doDeleteTask() { // Check if they're logged in if (User::isGuest()) { $this->loginTask(Lang::txt('COM_GROUPS_DELETE_MUST_BE_LOGGED_IN')); return; } //check to make sure we have cname if (!$this->cn) { $this->_errorHandler(400, Lang::txt('COM_GROUPS_ERROR_NO_ID')); } // Load the group page $this->view->group = Group::getInstance($this->cn); // Ensure we found the group info if (!$this->view->group || !$this->view->group->get('gidNumber')) { $this->_errorHandler(404, Lang::txt('COM_GROUPS_ERROR_NOT_FOUND')); } // Check authorization if ($this->_authorize() != 'manager') { $this->_errorHandler(403, Lang::txt('COM_GROUPS_ERROR_NOT_AUTH')); } //get request vars $confirm_delete = Request::getInt('confirmdel', ''); $message = trim(Request::getVar('msg', '', 'post')); //check to make sure we have confirmed if (!$confirm_delete) { $this->setNotification(Lang::txt('COM_GROUPS_DELETE_MISSING_CONFIRM_MESSAGE'), 'error'); $this->deleteTask(); return; } // Start log $log = Lang::txt('COM_GROUPS_DELETE_MESSAGE_SUBJECT', $this->view->group->get('cn')) . "\n"; $log .= Lang::txt('COM_GROUPS_GROUP_ID') . ': ' . $this->view->group->get('gidNumber') . "\n"; $log .= Lang::txt('COM_GROUPS_GROUP_CNAME') . ': ' . $this->view->group->get('cn') . "\n"; $log .= Lang::txt('COM_GROUPS_GROUP_TITLE') . ': ' . $this->view->group->get('description') . "\n"; $log .= Lang::txt('COM_GROUPS_GROUP_DISCOVERABILITY') . ': ' . $this->view->group->get('discoverability') . "\n"; $log .= Lang::txt('COM_GROUPS_GROUP_PUBLIC_TEXT') . ': ' . stripslashes($this->view->group->get('public_desc')) . "\n"; $log .= Lang::txt('COM_GROUPS_GROUP_PRIVATE_TEXT') . ': ' . stripslashes($this->view->group->get('private_desc')) . "\n"; $log .= Lang::txt('COM_GROUPS_GROUP_RESTRICTED_MESSAGE') . ': ' . stripslashes($this->view->group->get('restrict_msg')) . "\n"; // Get number of group members $members = $this->view->group->get('members'); $managers = $this->view->group->get('managers'); // Log ids of group members if ($members) { $log .= Lang::txt('COM_GROUP_MEMBERS') . ': '; foreach ($members as $gu) { $log .= $gu . ' '; } $log .= '' . "\n"; } $log .= Lang::txt('COM_GROUP_MANAGERS') . ': '; foreach ($managers as $gm) { $log .= $gm . ' '; } $log .= '' . "\n"; // Trigger the functions that delete associated content // Should return logs of what was deleted $logs = Event::trigger('groups.onGroupDelete', array($this->view->group)); if (count($logs) > 0) { $log .= implode('', $logs); } // Build the file path $path = PATH_APP . DS . trim($this->config->get('uploadpath', '/site/groups'), DS) . DS . $this->view->group->get('gidNumber'); if (is_dir($path)) { // Attempt to delete the file if (!Filesystem::deleteDirectory($path)) { $this->setNotification(Lang::txt('UNABLE_TO_DELETE_DIRECTORY'), 'error'); } } //clone the deleted group $deletedgroup = clone $this->view->group; // Delete group if (!$this->view->group->delete()) { $this->setNotification($this->view->group->error, 'error'); $this->deleteTask(); return; } // Build the "from" info for e-mails $from = array(); $from['name'] = Config::get('sitename') . ' ' . Lang::txt(strtoupper($this->_name)); $from['email'] = Config::get('mailfrom'); // E-mail subject $subject = Lang::txt('COM_GROUPS_DELETE_MESSAGE_SUBJECT', $deletedgroup->get('cn')); // Build the e-mail message $eview = new \Hubzero\Component\View(array('name' => 'emails', 'layout' => 'deleted')); $eview->option = $this->_option; $eview->sitename = Config::get('sitename'); $eview->user = User::getRoot(); $eview->gcn = $deletedgroup->get('cn'); $eview->msg = $message; $eview->group = $deletedgroup; $html = $eview->loadTemplate(); $html = str_replace("\n", "\r\n", $html); // build array of email recipients $groupMembers = array(); foreach ($members as $member) { $profile = \Hubzero\User\Profile::getInstance($member); if ($profile) { $groupMembers[$profile->get('email')] = $profile->get('name'); } } // create new message $message = new \Hubzero\Mail\Message(); // build message object and send $message->setSubject($subject)->addFrom($from['email'], $from['name'])->setTo($groupMembers)->addHeader('X-Mailer', 'PHP/' . phpversion())->addHeader('X-Component', 'com_groups')->addHeader('X-Component-Object', 'group_deleted')->addHeader('X-Component-ObjectId', $deletedgroup->get('gidNumber'))->addPart($html, 'text/plain')->send(); // log deleted group Log::log(array('gidNumber' => $deletedgroup->get('gidNumber'), 'action' => 'group_deleted', 'comments' => $log)); // Redirect back to the groups page $this->setNotification(Lang::txt('COM_GROUPS_DELETE_SUCCESS', $deletedgroup->get('description')), 'passed'); App::redirect(Route::url('index.php?option=' . $this->_option)); return; }
/** * Add membership request for user * * @return array */ public function dorequestTask() { // Check if they're logged in if (User::isGuest()) { $this->loginTask(Lang::txt('COM_GROUPS_INVITE_MUST_BE_LOGGED_IN_TO_REQUEST')); return; } Request::checkToken(); //check to make sure we have cname if (!$this->cn) { $this->_errorHandler(400, Lang::txt('COM_GROUPS_ERROR_NO_ID')); } // Load the group page $this->view->group = Group::getInstance($this->cn); // Ensure we found the group info if (!$this->view->group || !$this->view->group->get('gidNumber')) { $this->_errorHandler(404, Lang::txt('COM_GROUPS_ERROR_NOT_FOUND')); } // Get the group params $gparams = new Registry($this->view->group->get('params')); // If membership is managed in seperate place disallow action if ($gparams->get('membership_control', 1) == 0) { $this->setNotification(Lang::txt('COM_GROUPS_MEMBERSHIP_MANAGED_ELSEWHERE'), 'error'); App::redirect(Route::url('index.php?option=com_groups&cn=' . $this->view->group->get('cn'))); return; } //make sure group has restricted policy if ($this->view->group->get('join_policy') != 1) { return; } //add user to applicants $this->view->group->add('applicants', array(User::get('id'))); $this->view->group->update(); // Instantiate the reason object and bind the incoming data $row = new Reason($this->database); $row->uidNumber = User::get('id'); $row->gidNumber = $this->view->group->get('gidNumber'); $row->reason = Request::getVar('reason', Lang::txt('GROUPS_NO_REASON_GIVEN'), 'post'); $row->reason = \Hubzero\Utility\Sanitize::stripAll($row->reason); $row->date = Date::toSql(); // Check and store the reason if (!$row->check()) { return App::abort(500, $row->getError()); } if (!$row->store()) { return App::abort(500, $row->getError()); } // Log the membership request Log::log(array('gidNumber' => $this->view->group->get('gidNumber'), 'action' => 'membership_requested', 'comments' => array(User::get('id')))); // Log activity $url = Route::url('index.php?option=' . $this->_option . '&cn=' . $this->view->group->get('cn')); $recipients = array(['group', $this->view->group->get('gidNumber')], ['user', User::get('id')]); foreach ($this->view->group->get('managers') as $recipient) { $recipients[] = ['user', $recipient]; } Event::trigger('system.logActivity', ['activity' => ['action' => 'requested', 'scope' => 'group', 'scope_id' => $this->view->group->get('gidNumber'), 'description' => Lang::txt('COM_GROUPS_ACTIVITY_GROUP_USER_REQUESTED', '<a href="' . $url . '">' . $this->view->group->get('description') . '</a>'), 'details' => array('title' => $this->view->group->get('description'), 'url' => $url, 'cn' => $this->view->group->get('cn'), 'gidNumber' => $this->view->group->get('gidNumber'))], 'recipients' => $recipients]); // E-mail subject $subject = Lang::txt('COM_GROUPS_JOIN_REQUEST_EMAIL_SUBJECT', $this->view->group->get('cn')); // Build the e-mail message $eview = new \Hubzero\Component\View(array('name' => 'emails', 'layout' => 'request')); $eview->option = $this->_option; $eview->sitename = Config::get('sitename'); $eview->user = User::getInstance(); $eview->group = $this->view->group; $eview->row = $row; $html = $eview->loadTemplate(); $html = str_replace("\n", "\r\n", $html); // Get the system administrator e-mail $emailadmin = Config::get('mailfrom'); // Build the "from" portion of the e-mail $from = array(); $from['name'] = Config::get('sitename') . ' ' . Lang::txt(strtoupper($this->_name)); $from['email'] = Config::get('mailfrom'); // build array of managers $managers = array(); foreach ($this->view->group->get('managers') as $m) { $profile = User::getInstance($m); if ($profile) { $managers[$profile->get('email')] = $profile->get('name'); } } // create new message $message = new \Hubzero\Mail\Message(); // build message object and send $message->setSubject($subject)->addFrom($from['email'], $from['name'])->setTo($managers)->addHeader('X-Mailer', 'PHP/' . phpversion())->addHeader('X-Component', 'com_groups')->addHeader('X-Component-Object', 'group_membership_requested')->addPart($html, 'text/plain')->send(); //tell the user they just did good $this->setNotification(Lang::txt('COM_GROUPS_INVITE_REQUEST_FORWARDED'), 'passed'); // Push through to the groups listing App::redirect($url); }
/** * Approve a group page * * @return void */ public function approveTask() { // make sure we are approvers if (!Helpers\Pages::isPageApprover()) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_MODULES_AUTHORIZED_APPROVERS_ONLY'), 'error'); return; } // get request vars $id = Request::getInt('id', 0); // load page $module = new Module($id); // make sure version is unapproved if ($module->get('approved') == 1) { //inform user & redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_MODULES_ALREADY_APPROVED'), 'warning'); return; } // set approved and approved date and approver $module->set('approved', 1); $module->set('approved_on', Date::toSql()); $module->set('approved_by', User::get('id')); if (!is_object($this->group->params)) { $this->group->params = new \Hubzero\Config\Registry($this->group->params); } $module->set('page_trusted', $this->group->params->get('page_trusted', 0)); // DONT RUN CHECK ON STORE METHOD (pass false as first arg to store() method) $module->store(false, $this->group->isSuperGroup()); // send approved notifcation Helpers\Pages::sendApprovedNotification('module', $module); // log change Log::log(array('gidNumber' => $this->group->get('gidNumber'), 'action' => 'group_modules_approved', 'comments' => array($module->get('id')))); // inform user and redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_MODULES_APPROVED'), 'passed'); }
/** * Denies user(s) group membership * * @return void */ public function denyTask() { // Check for request forgeries Request::checkToken(['get', 'post']); $gid = Request::getVar('gid', ''); // Load the group page $this->group = new Group(); $this->group->read($gid); // An array for the users we're going to deny $users = array(); // Incoming array of users to demote $mbrs = Request::getVar('id', array()); $mbrs = !is_array($mbrs) ? array($mbrs) : $mbrs; foreach ($mbrs as $mbr) { // Retrieve user's account info $targetuser = User::getInstance($mbr); // Ensure we found an account if (is_object($targetuser)) { // Remove record of reason wanting to join group $reason = new Tables\Reason($this->database); $reason->deleteReason($targetuser->get('username'), $this->group->get('cn')); // Add them to the array of users to deny $users[] = $targetuser->get('id'); } else { $this->setError(Lang::txt('COM_GROUPS_USER_NOTFOUND') . ' ' . $mbr); } } // Remove users from managers list $this->group->remove('applicants', $users); // Save changes $this->group->update(); // log Log::log(array('gidNumber' => $this->group->get('gidNumber'), 'action' => 'group_members_denied', 'comments' => $users)); if (!Request::getInt('no_html', 0)) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->group->get('cn'), false), Lang::txt('COM_GROUPS_MEMBER_DENIED')); } }
/** * Cancel membership of one or more users * * @return void */ private function confirmcancel() { if ($this->authorized != 'manager' && $this->authorized != 'admin') { return false; } if ($this->membership_control == 0) { return false; } $database = App::get('db'); // An array for the users we're going to deny $users = array(); $user_emails = array(); // Incoming array of users to demote $mbrs = Request::getVar('users', array(), 'post'); // Set a flag for emailing any changes made $admchange = ''; require_once PATH_CORE . DS . 'components' . DS . 'com_members' . DS . 'helpers' . DS . 'utility.php'; foreach ($mbrs as $mbr) { //if an email address if (\Components\Members\Helpers\Utility::validemail($mbr)) { $user_emails[] = $mbr; $this->notifyEmailInvitedUser($mbr); } else { // Retrieve user's account info $targetuser = User::getInstance($mbr); // Ensure we found an account if (is_object($targetuser) && $targetuser->get('id')) { $admchange .= "\t\t" . $targetuser->get('name') . "\r\n"; $admchange .= "\t\t" . $targetuser->get('username') . ' (' . $targetuser->get('email') . ')'; $admchange .= count($mbrs) > 1 ? "\r\n" : ''; // Add them to the array of users to cancel invitations $users[] = $targetuser->get('id'); // Log activity $recipients = array(['group', $this->group->get('gidNumber')], ['user', $targetuser->get('id')]); foreach ($this->group->get('managers') as $recipient) { $recipients[] = ['user', $recipient]; } Event::trigger('system.logActivity', ['activity' => ['action' => 'denied', 'scope' => 'group.membership', 'scope_id' => $this->group->get('gidNumber'), 'description' => Lang::txt('PLG_GROUPS_MEMBERS_ACTIVITY_CANCELLED', '<a href="' . Route::url('index.php?option=com_members&id=' . $targetuser->get('id')) . '">' . $targetuser->get('name') . '</a>', '<a href="' . Route::url('index.php?option=com_groups&cn=' . $this->group->get('cn')) . '">' . $this->group->get('description') . '</a>'), 'details' => array('user_id' => $targetuser->get('id'), 'group_id' => $this->group->get('gidNumber'))], 'recipients' => $recipients]); // E-mail the user, letting them know the invitation has been cancelled $this->notifyUser($targetuser); } else { $this->setError(Lang::txt('PLG_GROUPS_MESSAGES_ERROR_USER_NOTFOUND') . ' ' . $mbr); } } } // Remove users from managers list $this->group->remove('invitees', $users); // Save changes $this->group->update(); //delete any email invited users $db = App::get('db'); foreach ($user_emails as $ue) { $sql = "DELETE FROM `#__xgroups_inviteemails` WHERE email=" . $db->Quote($ue); $db->setQuery($sql); $db->query(); } // log invites \Components\Groups\Models\Log::log(array('gidNumber' => $this->group->get('gidNumber'), 'action' => 'membership_invite_cancelled', 'comments' => array_merge($users, $user_emails))); App::redirect(Route::url('index.php?option=com_groups&cn=' . $this->group->get('cn') . '&active=members&filter=invitees'), '', '', true); }
/** * Send a message * * @return mixed */ protected function _send() { // Ensure the user is logged in if (User::isGuest()) { return false; } //message $message = Lang::txt('PLG_GROUPS_MESSAGES_FROM_GROUP', $this->group->get('cn')); // Incoming array of users to message $mbrs = Request::getVar('users', array(0), 'post'); switch ($mbrs[0]) { case 'invitees': $mbrs = $this->group->get('invitees'); $action = 'group_invitees_message'; $group_id = $this->group->get('gidNumber'); break; case 'applicants': $mbrs = $this->group->get('applicants'); $action = 'group_pending_message'; $group_id = $this->group->get('gidNumber'); break; case 'managers': $mbrs = $this->group->get('managers'); $action = 'group_managers_message'; $group_id = $this->group->get('gidNumber'); break; case 'all': $mbrs = $this->group->get('members'); $action = 'group_members_message'; $group_id = $this->group->get('gidNumber'); break; default: $message = Lang::txt('PLG_GROUPS_MESSAGES_FOR_GROUP_MEMBER', $this->group->get('cn')); foreach ($mbrs as $mbr) { if (strstr($mbr, '_')) { $role = explode('_', $mbr); $db = App::get('db'); $sql = "SELECT uidNumber FROM `#__xgroups_member_roles` WHERE roleid=" . $db->Quote($role[1]); $db->setQuery($sql); $member_roles = $db->loadAssocList(); foreach ($member_roles as $member) { $members[] = $member['uidNumber']; } $mbrs = $members; $action = 'group_role_message'; $group_id = $this->group->get('gidNumber'); } else { $action = ''; $group_id = 0; break; } } break; } // Incoming message and subject $s = Request::getVar('subject', Lang::txt('PLG_GROUPS_MESSAGES_SUBJECT')); $m = Request::getVar('message', ''); // Ensure we have a message if (!$s || !$m) { $html = '<p class="error">You must enter all required fields</p>'; $html .= $this->_create(); return $html; } // get all group members $recipients = array(); foreach ($mbrs as $mbr) { if ($profile = User::getInstance($mbr)) { $recipients[$profile->get('email')] = $profile->get('name'); } } // add invite emails if sending to invitees if ($action == 'group_invitees_message') { // Get invite emails $db = App::get('db'); $group_inviteemails = new \Hubzero\User\Group\InviteEmail(); $current_inviteemails = $group_inviteemails->getInviteEmails($this->group->get('gidNumber'), true); foreach ($current_inviteemails as $current_inviteemail) { $recipients[$current_inviteemail] = $current_inviteemail; } } // define from details $from = array('name' => $this->group->get('description') . " Group on " . Config::get("fromname"), 'email' => Config::get("mailfrom")); // create url $sef = Route::url('index.php?option=' . $this->_option . '&cn=' . $this->group->get('cn')); $sef = ltrim($sef, '/'); // create subject $subject = $s . " [Email sent on Behalf of " . User::get('name') . "]"; //message $plain = Lang::txt('PLG_GROUPS_MESSAGES_FROM_GROUP', $this->group->get('cn')); $plain .= "\r\n------------------------------------------------\r\n\r\n"; $plain .= $m; // create message $plain .= "\r\n\r\n------------------------------------------------\r\n" . Request::base() . $sef . "\r\n"; // create message object $message = new \Hubzero\Mail\Message(); // set message details and send $message->setSubject($subject)->setFrom(array($from['email'] => $from['name']))->addPart($plain, 'text/plain'); foreach ($recipients as $email => $name) { $message->setTo(array($email => $name))->send(); } // add invite emails if sending to invitees /*if ($action == 'group_invitees_message') { // Get invite emails $db = App::get('db'); $group_inviteemails = new \Hubzero\User\Group\InviteEmail(); $current_inviteemails = $group_inviteemails->getInviteEmails($this->group->get('gidNumber'), true); $headers = 'From: ' . $from['name'] . ' <' . $from['email'] . '>' . "\r\n"; $headers .= 'Reply-To: ' . $from['replytoname'] . ' <' . $from['replytoemail'] . '>' . "\r\n"; foreach ($current_inviteemails as $current_inviteemail) { mail($current_inviteemail, $subject, $message, $headers); } }*/ // Log the action if ($action) { // log invites \Components\Groups\Models\Log::log(array('gidNumber' => $this->group->get('gidNumber'), 'action' => $action, 'comments' => array(User::get('id')))); } // Determine if we're returning HTML or not // (if no - this is an AJAX call) $no_html = Request::getInt('no_html', 0); if (!$no_html) { $html = ''; if ($this->getError()) { $html .= '<p class="error">' . $this->getError() . '</p>'; } $html .= $this->_sent(); return $html; } }
/** * Unapprove a group * * @return void */ public function unapproveTask() { // Check for request forgeries //Request::checkToken(); if (!User::authorise('core.manage', $this->_option) && !User::authorise('core.admin', $this->_option) && !User::authorise('core.edit', $this->_option) && !User::authorise('core.edit.state', $this->_option)) { App::abort(403, Lang::txt('JERROR_ALERTNOAUTHOR')); } // Incoming $ids = Request::getVar('id', array()); // Get the single ID we're working with if (!is_array($ids)) { $ids = array($ids); } $i = 0; // foreach group id passed in foreach ($ids as $id) { // Load the group page $group = new Group(); $group->read($id); // Ensure we found the group info if (!$group) { continue; } // Set the group to be published and update $group->set('approved', 0); $group->update(); $i++; // log publishing Log::log(array('gidNumber' => $group->get('gidNumber'), 'action' => 'group_unapproved', 'comments' => 'unapproved by administrator')); } if ($i) { Notify::success(Lang::txt('COM_GROUPS_UNAPPROVED')); } // Output messsage and redirect $this->cancelTask(); }
/** * Delete Page Category * * @return void */ public function deleteTask() { // get request vars $ids = Request::getVar('id', array()); $deleted = array(); // delete each category foreach ($ids as $categoryid) { // load category object $category = new Page\Category($categoryid); // make sure this is our groups cat if ($category->get('gidNumber') != $this->group->get('gidNumber')) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_PAGES_CATEGORY_DELETE_FAILED'), 'error'); return; } // delete row if (!$category->delete()) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), $category->getError(), 'error'); return; } $deleted[] = $category->get('id'); } // log change Log::log(array('gidNumber' => $this->group->get('gidNumber'), 'action' => 'group_pagecategory_deleted', 'comments' => $deleted)); //inform user & redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_PAGES_CATEGORY_DELETE_SUCCESS'), 'passed'); }
/** * Cancel membership of one or more users * * @return void */ private function confirmcancel() { if ($this->authorized != 'manager' && $this->authorized != 'admin') { return false; } if ($this->membership_control == 0) { return false; } $database = App::get('db'); // An array for the users we're going to deny $users = array(); $user_emails = array(); // Incoming array of users to demote $mbrs = Request::getVar('users', array(0), 'post'); // Set a flag for emailing any changes made $admchange = ''; foreach ($mbrs as $mbr) { //if an email address if (preg_match("#^[_\\.\\%0-9a-zA-Z-]+@([0-9a-zA-Z-]+\\.)+[a-zA-Z]{2,6}\$#i", $mbr)) { $user_emails[] = $mbr; $this->notifyEmailInvitedUser($mbr); } else { // Retrieve user's account info $targetuser = User::getInstance($mbr); // Ensure we found an account if (is_object($targetuser)) { $admchange .= "\t\t" . $targetuser->get('name') . "\r\n"; $admchange .= "\t\t" . $targetuser->get('username') . ' (' . $targetuser->get('email') . ')'; $admchange .= count($mbrs) > 1 ? "\r\n" : ''; // Add them to the array of users to cancel invitations $users[] = $targetuser->get('id'); // E-mail the user, letting them know the invitation has been cancelled $this->notifyUser($targetuser); } else { $this->setError(Lang::txt('PLG_GROUPS_MESSAGES_ERROR_USER_NOTFOUND') . ' ' . $mbr); } } } // Remove users from managers list $this->group->remove('invitees', $users); // Save changes $this->group->update(); //delete any email invited users $db = App::get('db'); foreach ($user_emails as $ue) { $sql = "DELETE FROM `#__xgroups_inviteemails` WHERE email=" . $db->Quote($ue); $db->setQuery($sql); $db->query(); } // log invites \Components\Groups\Models\Log::log(array('gidNumber' => $this->group->get('gidNumber'), 'action' => 'membership_invite_cancelled', 'comments' => array_merge($users, $user_emails))); App::redirect(Route::url('index.php?option=com_groups&cn=' . $this->group->get('cn') . '&active=members&filter=invitees'), '', '', true); }