load($uid); $musers = array(); $toAddUsers = array(); // get selected members if ($row->groups_members) { $database->setQuery("SELECT id,name,username, block " . "\n FROM #__users " . "\n WHERE id IN (" . $row->groups_members . ")" . "\n ORDER BY block ASC, name ASC" ); $usersInGroup = $database->loadObjectList(); foreach($usersInGroup as $user) { $musers[] = mosHTML::makeOption($user->id, $user->id . "-" . $user->name . " (" . $user->username . ")" . ($user->block ? ' - ['._DML_USER_BLOCKED.']':'') ); } } // get non selected members $query = "SELECT id,name,username, block FROM #__users "; if ($row->groups_members) { $query .= "\n WHERE id NOT IN (" . $row->groups_members . ")" ; } $query .= "\n ORDER BY block ASC, name ASC"; $database->setQuery($query); $usersToAdd = $database->loadObjectList(); foreach($usersToAdd as $user) { $toAddUsers[] = mosHTML::makeOption($user->id, $user->id . "-" . $user->name . " (" . $user->username . ")" . ($user->block ? ' - ['._DML_USER_BLOCKED.']':'') ); } $usersList = mosHTML::selectList($musers, 'users_selected[]', 'class="inputbox" size="20" onDblClick="moveOptions(document.adminForm[\'users_selected[]\'], document.adminForm.users_not_selected)" multiple="multiple"', 'value', 'text', null); $toAddUsersList = mosHTML::selectList($toAddUsers, 'users_not_selected', 'class="inputbox" size="20" onDblClick="moveOptions(document.adminForm.users_not_selected, document.adminForm[\'users_selected[]\'])" multiple="multiple"', 'value', 'text', null); HTML_DMGroups::editGroup($option, $row, $usersList, $toAddUsersList); } function saveGroup($option) { DOCMAN_token::check() or die('Invalid Token'); global $database, $task; $row = new mosDMGroups($database); if (!$row->bind(DOCMAN_Utils::stripslashes($_POST))) { echo "\n"; exit(); } if (!$row->check()) { echo "\n"; exit(); } if (!$row->store()) { echo "\n"; exit(); } $row->checkin(); $members = mosGetParam($_POST, 'users_selected', array()); $members_imploded = implode(',', $members); $database->setQuery("UPDATE #__docman_groups SET groups_members='" . $members_imploded . "' WHERE groups_id=". (int) $row->groups_id); $database->query(); if( $task == 'save' OR $task == 'saveg' ) { $url = 'index2.php?option=com_docman§ion=groups&task=show'; } else { // $task = 'apply' $url = 'index2.php?option=com_docman§ion=groups&task=edit&cid[0]='.$row->groups_id; } mosRedirect( $url, _DML_SAVED_CHANGES); } function showGroups($option) { global $database; $search = trim(strtolower(mosGetParam($_POST, 'search', ''))); $limit = intval(mosGetParam($_POST, 'limit', 10)); $limitstart = intval(mosGetParam($_POST, 'limitstart', 0)); $where = array(); if ($search) { $where[] = "LOWER(groups_name) LIKE '%$search%'"; } // get the total number of records $database->setQuery("SELECT count(*) FROM #__docman_groups" . (count($where) ? "\nWHERE " . implode(' AND ', $where) : "")); $total = $database->loadResult(); echo $database->getErrorMsg(); if ($limit > $total) { $limitstart = 0; } $query = "SELECT *" ."\n FROM #__docman_groups" .(count($where) ? "\n WHERE " . implode(' AND ', $where) : "") ."\n ORDER BY groups_name"; $database->setQuery($query, $limitstart,$limit); $rows = $database->loadObjectList(); if ($database->getErrorNum()) { echo $database->stderr(); return false; } require_once($GLOBALS['mosConfig_absolute_path'] . '/administrator/includes/pageNavigation.php'); $pageNav = new mosPageNav($total, $limitstart, $limit); HTML_DMGroups::showGroups($option, $rows, $search, $pageNav); } function removeGroup($cid) { DOCMAN_token::check() or die('Invalid Token'); global $database; if (!is_array($cid) || count($cid) < 1) { echo "\n"; exit; } if (count($cid)) { $cids = implode(',', $cid); // lets see if some document is owned by this group and not allow to delete it for ($g = 0;$g < count($cid);$g++) { $ttt = $cid[$g]; $ttt = ($ttt-2 * $ttt) -10; $query = "SELECT id FROM #__docman WHERE dmowner=" . $ttt; $database->setQuery($query); if (!($result = $database->query())) { echo "\n"; } if ($database->getNumRows($result) != 0) { mosRedirect("index2.php?option=com_docman§ion=groups", _DML_CANNOT_DEL_GROUP); } } $database->setQuery("DELETE FROM #__docman_groups WHERE groups_id IN ($cids)"); if (!$database->query()) { echo "\n"; } } mosRedirect("index2.php?option=com_docman§ion=groups"); } function emailGroup($gid) { global $database , $mosConfig_sitename; $lists = array(); $database->setQuery("SELECT * FROM #__docman_groups WHERE groups_id=$gid"); $email_group = $database->loadObjectList(); $lists['leadin'] = _DML_THIS_IS . " [" . $mosConfig_sitename . "] " . _DML_SENT_BY . " '" . $email_group[0]->groups_name . "'"; HTML_DMGroups::messageForm($email_group, $lists); } function cancelGroup($option) { global $database; $row = new mosDMGroups($database); $row->bind(DOCMAN_Utils::stripslashes($_POST)); $row->checkin(); mosRedirect("index2.php?option=$option§ion=groups"); } function sendEmail($gid) { DOCMAN_token::check() or die('Invalid Token'); // this is a generic mass mail sender to groups members. // From frontend you will find a email to group function specific for a document. global $database, $my, $mosConfig_sitename; global $mosConfig_mailfrom, $mosConfig_fromname; $this_index = 'index2.php?option=com_docman§ion=groups'; $message = mosGetParam($_POST, "mm_message", ''); $subject = mosGetParam($_POST, "mm_subject", ''); $leadin = mosGetParam($_POST, "mm_leadin", ''); if (!$message || !$subject) { mosRedirect($this_index . '&task=emailgroup&gid=' . $gid , _DML_FILL_FORM); } $usertmp = trim(strtolower($my->usertype)); if ($usertmp != "super administrator" && $usertmp != "superadministrator" && $usertmp != "manager") { mosRedirect("index2.php", _DML_ONLY_ADMIN_EMAIL); } // Get the 'TO' list of addresses $database->setQuery("SELECT * " . "\n FROM #__docman_groups " . "\n WHERE groups_id=" . (int) $gid); $email_group = $database->loadObjectList(); $database->setQuery("SELECT id,name,username,email " . "\n FROM #__users" . "\n WHERE id in ( " . $email_group[0]->groups_members . ")" . "\n AND email !=''"); $listofusers = $database->loadObjectList(); if (! count($listofusers)) { mosRedirect($this_index , _DML_NO_TARGET_EMAIL . " " . $email_groups[0]->name); } // Get 'FROM' sending email address (Use default) if (! $mosConfig_mailfrom) { $database->setQuery("SELECT email " . "\n FROM #__users " . "\n WHERE id=". $my->id); $my->email = $database->loadResult(); echo $database->getErrorMsg(); $mosConfig_mailfrom = $my->email; } // Build e-mail message format $message = ($leadin ? (stripslashes($leadin) . "\r\n\r\n") :'') . stripslashes($message); $subject = stripslashes($subject); // ------- Obsolete: ...kept for historical purposes.... // $headers = "MIME-Version: 1.0\r\n" // . "From: " .$mosConfig_sitename." <".$my->email.">\r\n" // . "Reply-To: ".$mosConfig_sitename." <".$my->email.">\r\n" // . "X-Priority: 3\r\n" // . "X-MSMail-Priority: Low\r\n" // . "X-Mailer: DOCman\r\n" // ; // mail($emailtosend->email, $subject, $message, $headers); // TO: SUBJECT: (message) Headers // ------------ Send email using standard mosMail function foreach($listofusers as $emailtosend) { mosMail($mosConfig_mailfrom, $mosConfig_fromname, $emailtosend->email, $subject, $message); } mosRedirect($this_index, _DML_EMAIL_SENT_TO . " " . count($listofusers) . " " . _DML_USERS); }