} elseif ($getMode === 6) { // reload future role memberships $count_show_roles = 0; $roleStatement = getFutureRolesFromDatabase($getUserId); $count_role = $roleStatement->rowCount(); getRoleMemberships('future_role_list', $user, $roleStatement, $count_role, true); if ($count_role === 0) { echo '<script type="text/javascript">$("#profile_future_roles_box").css({ \'display\':\'none\' })</script>'; } else { echo '<script type="text/javascript">$("#profile_future_roles_box").css({ \'display\':\'block\' })</script>'; } } elseif ($getMode === 7) { // save membership date changes $getMembershipStart = admFuncVariableIsValid($_GET, 'membership_start_date_' . $getMemberId, 'date', array('requireValue' => true)); $getMembershipEnd = admFuncVariableIsValid($_GET, 'membership_end_date_' . $getMemberId, 'date', array('requireValue' => true)); $member = new TableMembers($gDb, $getMemberId); $role = new TableRoles($gDb, $member->getValue('mem_rol_id')); // check if user has the right to edit this membership if (!$role->allowedToAssignMembers($gCurrentUser)) { exit($gL10n->get('SYS_NO_RIGHTS')); } $formatedStartDate = ''; $formatedEndDate = ''; // Check das Beginn Datum $startDate = new DateTimeExtended($getMembershipStart, $gPreferences['system_date']); if ($startDate->isValid()) { // Datum formatiert zurueckschreiben $formatedStartDate = $startDate->format('Y-m-d'); } else { exit($gL10n->get('SYS_DATE_INVALID', $gL10n->get('SYS_START'), $gPreferences['system_date'])); }
} if ($getMode === 'assign') { // change membership of that user // this must be called as ajax request try { $membership = 0; $leadership = 0; if (isset($_POST['member_' . $getUserId]) && $_POST['member_' . $getUserId] == 'true') { $membership = 1; } if (isset($_POST['leader_' . $getUserId]) && $_POST['leader_' . $getUserId] == 'true') { $membership = 1; $leadership = 1; } // Member $member = new TableMembers($gDb); // Datensatzupdate $mem_count = $role->countMembers($getUserId); // Wenn Rolle weniger mitglieder hätte als zugelassen oder Leiter hinzugefügt werden soll if ($leadership == 1 || $leadership == 0 && $membership == 1 && ($role->getValue('rol_max_members') > $mem_count || $role->getValue('rol_max_members') == 0 || $role->getValue('rol_max_members') == 0)) { $member->startMembership($role->getValue('rol_id'), $getUserId, $leadership); echo 'success'; } elseif ($leadership == 0 && $membership == 0) { $member->stopMembership($role->getValue('rol_id'), $getUserId); echo 'success'; } else { $gMessage->show($gL10n->get('SYS_ROLE_MAX_MEMBERS', $role->getValue('rol_name'))); } } catch (AdmException $e) { $e->showText(); }
/** Creates all necessary data for a new organization. This method can only be * called once for an organization. It will create the basic categories, lists, * roles, systemmails etc. * @param $userId The id of the webmaster who creates the new organization. * This will be the first valid user of the new organization. */ public function createBasicData($userId) { global $gL10n, $gProfileFields; // read id of system user from database $sql = 'SELECT usr_id FROM ' . TBL_USERS . ' WHERE usr_login_name LIKE \'' . $gL10n->get('SYS_SYSTEM') . '\' '; $this->db->query($sql); $row = $this->db->fetch_array(); $systemUserId = $row['usr_id']; // create all systemmail texts and write them into table adm_texts $systemmailsTexts = array('SYSMAIL_REGISTRATION_USER' => $gL10n->get('SYS_SYSMAIL_REGISTRATION_USER'), 'SYSMAIL_REGISTRATION_WEBMASTER' => $gL10n->get('SYS_SYSMAIL_REGISTRATION_WEBMASTER'), 'SYSMAIL_REFUSE_REGISTRATION' => $gL10n->get('SYS_SYSMAIL_REFUSE_REGISTRATION'), 'SYSMAIL_NEW_PASSWORD' => $gL10n->get('SYS_SYSMAIL_NEW_PASSWORD'), 'SYSMAIL_ACTIVATION_LINK' => $gL10n->get('SYS_SYSMAIL_ACTIVATION_LINK')); $text = new TableText($this->db); foreach ($systemmailsTexts as $key => $value) { // convert <br /> to a normal line feed $value = preg_replace('/<br[[:space:]]*\\/?[[:space:]]*>/', chr(13) . chr(10), $value); $text->clear(); $text->setValue('txt_org_id', $this->getValue('org_id')); $text->setValue('txt_name', $key); $text->setValue('txt_text', $value); $text->save(); } // create default category for roles, events and weblinks $sql = 'INSERT INTO ' . TBL_CATEGORIES . ' (cat_org_id, cat_type, cat_name_intern, cat_name, cat_hidden, cat_default, cat_sequence, cat_usr_id_create, cat_timestamp_create) VALUES (' . $this->getValue('org_id') . ', \'ROL\', \'COMMON\', \'SYS_COMMON\', 0, 1, 1, ' . $systemUserId . ',\'' . DATETIME_NOW . '\')'; $this->db->query($sql); $categoryCommon = $this->db->insert_id(); $sql = 'INSERT INTO ' . TBL_CATEGORIES . ' (cat_org_id, cat_type, cat_name_intern, cat_name, cat_hidden, cat_default, cat_system, cat_sequence, cat_usr_id_create, cat_timestamp_create) VALUES (' . $this->getValue('org_id') . ', \'ROL\', \'GROUPS\', \'INS_GROUPS\', 0, 0, 0, 2, ' . $systemUserId . ',\'' . DATETIME_NOW . '\') , (' . $this->getValue('org_id') . ', \'ROL\', \'COURSES\', \'INS_COURSES\', 0, 0, 0, 3, ' . $systemUserId . ',\'' . DATETIME_NOW . '\') , (' . $this->getValue('org_id') . ', \'ROL\', \'TEAMS\', \'INS_TEAMS\', 0, 0, 0, 4, ' . $systemUserId . ',\'' . DATETIME_NOW . '\') , (' . $this->getValue('org_id') . ', \'LNK\', \'COMMON\', \'SYS_COMMON\', 0, 1, 0, 1, ' . $systemUserId . ',\'' . DATETIME_NOW . '\') , (' . $this->getValue('org_id') . ', \'LNK\', \'INTERN\', \'INS_INTERN\', 1, 0, 0, 2, ' . $systemUserId . ',\'' . DATETIME_NOW . '\') , (' . $this->getValue('org_id') . ', \'DAT\', \'COMMON\', \'SYS_COMMON\', 0, 1, 0, 1, ' . $systemUserId . ',\'' . DATETIME_NOW . '\') , (' . $this->getValue('org_id') . ', \'DAT\', \'TRAINING\',\'INS_TRAINING\', 0, 0, 0, 2, ' . $systemUserId . ',\'' . DATETIME_NOW . '\') , (' . $this->getValue('org_id') . ', \'DAT\', \'COURSES\', \'INS_COURSES\', 0, 0, 0, 3, ' . $systemUserId . ',\'' . DATETIME_NOW . '\') '; $this->db->query($sql); // create default folder for download module in database $sql = 'INSERT INTO ' . TBL_FOLDERS . ' (fol_org_id, fol_type, fol_name, fol_path, fol_locked, fol_public, fol_timestamp) VALUES (' . $this->getValue('org_id') . ', \'DOWNLOAD\', \'download\', \'/adm_my_files\', 0,1,\'' . DATETIME_NOW . '\')'; $this->db->query($sql); // now create default roles // Create role webmaster $roleWebmaster = new TableRoles($this->db); $roleWebmaster->setValue('rol_cat_id', $categoryCommon); $roleWebmaster->setValue('rol_name', $gL10n->get('SYS_WEBMASTER')); $roleWebmaster->setValue('rol_description', $gL10n->get('INS_DESCRIPTION_WEBMASTER')); $roleWebmaster->setValue('rol_assign_roles', 1); $roleWebmaster->setValue('rol_approve_users', 1); $roleWebmaster->setValue('rol_announcements', 1); $roleWebmaster->setValue('rol_dates', 1); $roleWebmaster->setValue('rol_download', 1); $roleWebmaster->setValue('rol_guestbook', 1); $roleWebmaster->setValue('rol_guestbook_comments', 1); $roleWebmaster->setValue('rol_photo', 1); $roleWebmaster->setValue('rol_weblinks', 1); $roleWebmaster->setValue('rol_edit_user', 1); $roleWebmaster->setValue('rol_mail_to_all', 1); $roleWebmaster->setValue('rol_mail_this_role', 3); $roleWebmaster->setValue('rol_profile', 1); $roleWebmaster->setValue('rol_this_list_view', 1); $roleWebmaster->setValue('rol_all_lists_view', 1); $roleWebmaster->setValue('rol_webmaster', 1); $roleWebmaster->setValue('rol_inventory', 1); $roleWebmaster->save(); // Create role member $roleMember = new TableRoles($this->db); $roleMember->setValue('rol_cat_id', $categoryCommon); $roleMember->setValue('rol_name', $gL10n->get('SYS_MEMBER')); $roleMember->setValue('rol_description', $gL10n->get('INS_DESCRIPTION_MEMBER')); $roleMember->setValue('rol_mail_this_role', 2); $roleMember->setValue('rol_profile', 1); $roleMember->setValue('rol_this_list_view', 1); $roleMember->setValue('rol_default_registration', 1); $roleMember->save(); // Create role board $roleManagement = new TableRoles($this->db); $roleManagement->setValue('rol_cat_id', $categoryCommon); $roleManagement->setValue('rol_name', $gL10n->get('INS_BOARD')); $roleManagement->setValue('rol_description', $gL10n->get('INS_DESCRIPTION_BOARD')); $roleManagement->setValue('rol_announcements', 1); $roleManagement->setValue('rol_dates', 1); $roleManagement->setValue('rol_weblinks', 1); $roleManagement->setValue('rol_edit_user', 1); $roleManagement->setValue('rol_mail_to_all', 1); $roleManagement->setValue('rol_mail_this_role', 2); $roleManagement->setValue('rol_profile', 1); $roleManagement->setValue('rol_this_list_view', 1); $roleManagement->setValue('rol_all_lists_view', 1); $roleManagement->save(); // Create membership for user in role 'Webmaster' and 'Members' $member = new TableMembers($this->db); $member->startMembership($roleWebmaster->getValue('rol_id'), $userId); $member->startMembership($roleMember->getValue('rol_id'), $userId); // create object with current user field structure $gProfileFields = new ProfileFields($this->db, $this->getValue('org_id')); // create default list configurations $addressList = new ListConfiguration($this->db); $addressList->setValue('lst_name', $gL10n->get('INS_ADDRESS_LIST')); $addressList->setValue('lst_org_id', $this->getValue('org_id')); $addressList->setValue('lst_global', 1); $addressList->setValue('lst_default', 1); $addressList->addColumn(1, $gProfileFields->getProperty('LAST_NAME', 'usf_id'), 'ASC'); $addressList->addColumn(2, $gProfileFields->getProperty('FIRST_NAME', 'usf_id'), 'ASC'); $addressList->addColumn(3, $gProfileFields->getProperty('BIRTHDAY', 'usf_id')); $addressList->addColumn(4, $gProfileFields->getProperty('ADDRESS', 'usf_id')); $addressList->addColumn(5, $gProfileFields->getProperty('POSTCODE', 'usf_id')); $addressList->addColumn(6, $gProfileFields->getProperty('CITY', 'usf_id')); $addressList->save(); $phoneList = new ListConfiguration($this->db); $phoneList->setValue('lst_name', $gL10n->get('INS_PHONE_LIST')); $phoneList->setValue('lst_org_id', $this->getValue('org_id')); $phoneList->setValue('lst_global', 1); $phoneList->addColumn(1, $gProfileFields->getProperty('LAST_NAME', 'usf_id'), 'ASC'); $phoneList->addColumn(2, $gProfileFields->getProperty('FIRST_NAME', 'usf_id'), 'ASC'); $phoneList->addColumn(3, $gProfileFields->getProperty('PHONE', 'usf_id')); $phoneList->addColumn(4, $gProfileFields->getProperty('MOBILE', 'usf_id')); $phoneList->addColumn(5, $gProfileFields->getProperty('EMAIL', 'usf_id')); $phoneList->addColumn(6, $gProfileFields->getProperty('FAX', 'usf_id')); $phoneList->save(); $contactList = new ListConfiguration($this->db); $contactList->setValue('lst_name', $gL10n->get('SYS_CONTACT_DETAILS')); $contactList->setValue('lst_org_id', $this->getValue('org_id')); $contactList->setValue('lst_global', 1); $contactList->addColumn(1, $gProfileFields->getProperty('LAST_NAME', 'usf_id'), 'ASC'); $contactList->addColumn(2, $gProfileFields->getProperty('FIRST_NAME', 'usf_id'), 'ASC'); $contactList->addColumn(3, $gProfileFields->getProperty('BIRTHDAY', 'usf_id')); $contactList->addColumn(4, $gProfileFields->getProperty('ADDRESS', 'usf_id')); $contactList->addColumn(5, $gProfileFields->getProperty('POSTCODE', 'usf_id')); $contactList->addColumn(6, $gProfileFields->getProperty('CITY', 'usf_id')); $contactList->addColumn(7, $gProfileFields->getProperty('PHONE', 'usf_id')); $contactList->addColumn(8, $gProfileFields->getProperty('MOBILE', 'usf_id')); $contactList->addColumn(9, $gProfileFields->getProperty('EMAIL', 'usf_id')); $contactList->save(); $formerList = new ListConfiguration($this->db); $formerList->setValue('lst_name', $gL10n->get('INS_MEMBERSHIP')); $formerList->setValue('lst_org_id', $this->getValue('org_id')); $formerList->setValue('lst_global', 1); $formerList->addColumn(1, $gProfileFields->getProperty('LAST_NAME', 'usf_id')); $formerList->addColumn(2, $gProfileFields->getProperty('FIRST_NAME', 'usf_id')); $formerList->addColumn(3, $gProfileFields->getProperty('BIRTHDAY', 'usf_id')); $formerList->addColumn(4, 'mem_begin'); $formerList->addColumn(5, 'mem_end', 'DESC'); $formerList->save(); }
exit; } elseif ($getMode == 2) { // Termin loeschen, wenn dieser zur aktuellen Orga gehoert if ($date->getValue('cat_org_id') == $gCurrentOrganization->getValue('org_id')) { // member bzw. Teilnahme/Rolle löschen $date->delete(); // Loeschen erfolgreich -> Rueckgabe fuer XMLHttpRequest echo 'done'; } } elseif ($getMode == 3) { $member = new TableMembers($gDb); $member->startMembership($date->getValue('dat_rol_id'), $gCurrentUser->getValue('usr_id')); $gMessage->setForwardUrl($gNavigation->getUrl()); $gMessage->show($gL10n->get('DAT_ATTEND_DATE', $date->getValue('dat_headline'), $date->getValue('dat_begin')), $gL10n->get('DAT_ATTEND')); } elseif ($getMode == 4) { $member = new TableMembers($gDb); $member->deleteMembership($date->getValue('dat_rol_id'), $gCurrentUser->getValue('usr_id')); $gMessage->setForwardUrl($gNavigation->getUrl()); $gMessage->show($gL10n->get('DAT_CANCEL_DATE', $date->getValue('dat_headline'), $date->getValue('dat_begin')), $gL10n->get('DAT_ATTEND')); } elseif ($getMode == 6) { $filename = $date->getValue('dat_headline'); // for IE the filename must have special chars in hexadecimal if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT'])) { $filename = urlencode($filename); } header('Content-Type: text/calendar; charset=utf-8'); header('Content-Disposition: attachment; filename="' . $filename . '.ics"'); // necessary for IE, because without it the download with SSL has problems header('Cache-Control: private'); header('Pragma: public'); echo $date->getIcal($_SERVER['HTTP_HOST']);
/** * Create a new membership to a role for the current user. If the date range contains * a future or past membership of the same role then the two memberships will be merged. * In opposite to setRoleMembership this method can't be used to end a membership earlier! * @param int $roleId Id of the role for which the membership should be set. * @param string $startDate Start date of the membership. Default will be @b DATE_NOW. * @param string $endDate End date of the membership. Default will be @b 31.12.9999 * @param bool|string $leader If set to @b 1 then the member will be leader of the role and * might get more rights for this role. * @return bool Return @b true if the membership was successfully added. */ public function setRoleMembership($roleId, $startDate = DATE_NOW, $endDate = '9999-12-31', $leader = '') { $minStartDate = $startDate; $maxEndDate = $endDate; $member = new TableMembers($this->db); if ($startDate === '' || $endDate === '') { return false; } $this->db->startTransaction(); // subtract 1 day from start date so that we find memberships that ends yesterday // these memberships can be continued with new date $oneDayDateInterval = new DateInterval('P1D'); $startDate = DateTime::createFromFormat('Y-m-d', $startDate)->sub($oneDayDateInterval)->format('Y-m-d'); // add 1 to max date because we subtract one day if a membership ends if ($endDate !== '9999-12-31') { $endDate = DateTime::createFromFormat('Y-m-d', $endDate)->add($oneDayDateInterval)->format('Y-m-d'); } // search for membership with same role and user and overlapping dates $sql = 'SELECT * FROM ' . TBL_MEMBERS . ' WHERE mem_rol_id = ' . $roleId . ' AND mem_usr_id = ' . $this->getValue('usr_id') . ' AND mem_begin <= \'' . $endDate . '\' AND mem_end >= \'' . $startDate . '\' ORDER BY mem_begin ASC'; $membershipStatement = $this->db->query($sql); if ($membershipStatement->rowCount() === 1) { // one record found than update this record $row = $membershipStatement->fetch(); $member->setArray($row); // save new start date if an earlier date exists if (strcmp($minStartDate, $member->getValue('mem_begin', 'Y-m-d')) > 0) { $minStartDate = $member->getValue('mem_begin', 'Y-m-d'); } // save new end date if an later date exists // but only if end date is greater than the begin date otherwise the membership should be deleted if (strcmp($member->getValue('mem_end', 'Y-m-d'), $maxEndDate) > 0 && strcmp($member->getValue('mem_begin', 'Y-m-d'), $maxEndDate) < 0) { $maxEndDate = $member->getValue('mem_end', 'Y-m-d'); } } elseif ($membershipStatement->rowCount() > 1) { // several records found then read min and max date and delete all records while ($row = $membershipStatement->fetch()) { $member->clear(); $member->setArray($row); // save new start date if an earlier date exists if (strcmp($minStartDate, $member->getValue('mem_begin', 'Y-m-d')) > 0) { $minStartDate = $member->getValue('mem_begin', 'Y-m-d'); } // save new end date if an later date exists if (strcmp($member->getValue('mem_end', 'Y-m-d'), $maxEndDate) > 0) { $maxEndDate = $member->getValue('mem_end', 'Y-m-d'); } // delete existing entry because a new overlapping entry will be created $member->delete(); } $member->clear(); } if (strcmp($minStartDate, $maxEndDate) > 0) { // if start date is greater than end date than delete membership if ($member->getValue('mem_id') > 0) { $member->delete(); } $returnStatus = true; } else { // save membership to database $member->setValue('mem_rol_id', $roleId); $member->setValue('mem_usr_id', $this->getValue('usr_id')); $member->setValue('mem_begin', $minStartDate); $member->setValue('mem_end', $maxEndDate); if ($leader !== '') { $member->setValue('mem_leader', $leader); } $returnStatus = $member->save(); } $this->db->endTransaction(); $this->renewRoleData(); return $returnStatus; }
src="' . THEME_PATH . '/icons/delete.png" alt="' . $gL10n->get('SYS_DELETE') . '" /> ' . $gL10n->get('SYS_DELETE') . '</button> </div>'); $page->show(); exit; } elseif ($getMode === 2) { // User NUR aus der aktuellen Organisation entfernen // Es duerfen keine Webmaster entfernt werden if (!$gCurrentUser->isWebmaster() && $user->isWebmaster()) { $gMessage->show($gL10n->get('SYS_NO_RIGHTS')); } // User muss zur aktuellen Orga dazugehoeren // kein Suizid ermoeglichen if ($this_orga == false || $gCurrentUser->getValue('usr_id') == $getUserId) { $gMessage->show($gL10n->get('SYS_NO_RIGHTS')); } $member = new TableMembers($gDb); $sql = 'SELECT mem_id, mem_rol_id, mem_usr_id, mem_begin, mem_end, mem_leader FROM ' . TBL_ROLES . ', ' . TBL_CATEGORIES . ', ' . TBL_MEMBERS . ' WHERE rol_valid = 1 AND rol_cat_id = cat_id AND ( cat_org_id = ' . $gCurrentOrganization->getValue('org_id') . ' OR cat_org_id IS NULL ) AND mem_rol_id = rol_id AND mem_begin <= \'' . DATE_NOW . '\' AND mem_end > \'' . DATE_NOW . '\' AND mem_usr_id = ' . $getUserId; $mglStatement = $gDb->query($sql); while ($row = $mglStatement->fetch()) { // alle Rollen der aktuellen Gliedgemeinschaft auf ungueltig setzen $member->setArray($row); $member->stopMembership($row['mem_rol_id'], $row['mem_usr_id']);
/** * Adds all active memberships of the child role to the parent role. * If a membership still exists than start date will not be changed. Only * the end date will be set to 31.12.9999. * @return int Returns -1 if no parent or child row exists */ public function updateMembership() { if ($this->roleIdParent > 0 && $this->roleIdChild > 0) { $sql = 'SELECT mem_usr_id FROM ' . TBL_MEMBERS . ' WHERE mem_rol_id = ' . $this->roleIdChild . ' AND mem_begin <= \'' . DATE_NOW . '\' AND mem_end > \'' . DATE_NOW . '\''; $result = $this->db->query($sql); $num_rows = $this->db->num_rows($result); if ($num_rows) { $member = new TableMembers($this->db); while ($row = $this->db->fetch_object($result)) { $member->startMembership($this->roleIdParent, $row->mem_usr_id); } } return 0; } return -1; }
function getRoleMemberships($htmlListId, $user, $result_role, $count_role, $directOutput) { global $gDb, $gL10n, $gCurrentUser, $gPreferences, $g_root_path, $gProfileFields; $countShowRoles = 0; $member = new TableMembers($gDb); $role = new TableRoles($gDb); $roleMemHTML = '<ul class="list-group admidio-list-roles-assign" id="' . $htmlListId . '">'; while ($row = $gDb->fetch_array($result_role)) { if ($gCurrentUser->hasRightViewRole($row['mem_rol_id']) && $row['rol_visible'] == 1) { $formerMembership = false; $futureMembership = false; $showRoleEndDate = false; $deleteMode = 'pro_role'; $member->clear(); $member->setArray($row); $role->clear(); $role->setArray($row); // if membership will not end, then don't show end date if (strcmp($member->getValue('mem_end', 'Y-m-d'), '9999-12-31') != 0) { $showRoleEndDate = true; } // check if membership ends in the past if (strcmp(DATE_NOW, $member->getValue('mem_end', 'Y-m-d')) > 0) { $formerMembership = true; $deleteMode = 'pro_former'; } // check if membership starts in the future if (strcmp($member->getValue('mem_begin', 'Y-m-d'), DATE_NOW) > 0) { $futureMembership = true; $deleteMode = 'pro_future'; } // create list entry for one role $roleMemHTML .= ' <li class="list-group-item" id="role_' . $row['mem_rol_id'] . '"> <ul class="list-group admidio-list-roles-assign-pos"> <li class="list-group-item"> <span>' . $role->getValue('cat_name') . ' - '; if ($gCurrentUser->hasRightViewRole($member->getValue('mem_rol_id'))) { $roleMemHTML .= '<a href="' . $g_root_path . '/adm_program/modules/lists/lists_show.php?mode=html&rol_id=' . $member->getValue('mem_rol_id') . '" title="' . $role->getValue('rol_description') . '">' . $role->getValue('rol_name') . '</a>'; } else { echo $role->getValue('rol_name'); } if ($member->getValue('mem_leader') == 1) { $roleMemHTML .= ' - ' . $gL10n->get('SYS_LEADER'); } $roleMemHTML .= ' </span> <span class="pull-right text-right">'; if ($showRoleEndDate == true) { $roleMemHTML .= $gL10n->get('SYS_SINCE_TO', $member->getValue('mem_begin', $gPreferences['system_date']), $member->getValue('mem_end', $gPreferences['system_date'])); } elseif ($futureMembership == true) { $roleMemHTML .= $gL10n->get('SYS_FROM', $member->getValue('mem_begin', $gPreferences['system_date'])); } else { $roleMemHTML .= $gL10n->get('SYS_SINCE', $member->getValue('mem_begin', $gPreferences['system_date'])); } if ($role->allowedToAssignMembers($gCurrentUser)) { // You are not allowed to delete your own webmaster membership, other roles could be deleted if ($role->getValue('rol_webmaster') == 1 && $gCurrentUser->getValue('usr_id') != $user->getValue('usr_id') || $role->getValue('rol_webmaster') == 0) { $roleMemHTML .= ' <a class="admidio-icon-link" data-toggle="modal" data-target="#admidio_modal" href="' . $g_root_path . '/adm_program/system/popup_message.php?type=' . $deleteMode . '&element_id=role_' . $role->getValue('rol_id') . '&database_id=' . $member->getValue('mem_id') . '&name=' . urlencode($role->getValue('rol_name')) . '"><img src="' . THEME_PATH . '/icons/delete.png" alt="' . $gL10n->get('PRO_CANCEL_MEMBERSHIP') . '" title="' . $gL10n->get('PRO_CANCEL_MEMBERSHIP') . '" /></a>'; } else { $roleMemHTML .= ' <a class="admidio-icon-link"><img src="' . THEME_PATH . '/icons/dummy.png" alt=""/></a>'; } // do not edit webmaster role if ($row['rol_webmaster'] == 0) { $roleMemHTML .= '<a class="admidio-icon-link" style="cursor:pointer;" onclick="profileJS.toggleDetailsOn(' . $member->getValue('mem_id') . ')"><img src="' . THEME_PATH . '/icons/edit.png" alt="' . $gL10n->get('PRO_CHANGE_DATE') . '" title="' . $gL10n->get('PRO_CHANGE_DATE') . '" /></a>'; } else { $roleMemHTML .= '<a class="admidio-icon-link"><img src="' . THEME_PATH . '/icons/dummy.png" alt=""/></a>'; } } // only show info if system setting is activated if ($gPreferences['system_show_create_edit'] > 0) { $roleMemHTML .= '<a class="admidio-icon-link admMemberInfo" id="member_info_' . $member->getValue('mem_id') . '" href="javascript:"><img src="' . THEME_PATH . '/icons/info.png" alt="' . $gL10n->get('SYS_INFORMATIONS') . '" title="' . $gL10n->get('SYS_INFORMATIONS') . '"/></a>'; } $roleMemHTML .= '</span> </li> <li class="list-group-item" id="membership_period_' . $member->getValue('mem_id') . '" style="visibility: hidden; display: none;"><div class="collapse navbar-collapse">'; $form = new HtmlForm('membership_period_form_' . $member->getValue('mem_id'), $g_root_path . '/adm_program/modules/profile/profile_function.php?mode=7&user_id=' . $user->getValue('usr_id') . '&mem_id=' . $row['mem_id'], null, array('type' => 'navbar', 'setFocus' => false, 'class' => 'admidio-form-membership-period')); $form->addInput('membership_start_date_' . $member->getValue('mem_id'), $gL10n->get('SYS_START'), $member->getValue('mem_begin', $gPreferences['system_date']), array('type' => 'date', 'maxLength' => 10)); $form->addInput('membership_end_date_' . $member->getValue('mem_id'), $gL10n->get('SYS_END'), $member->getValue('mem_end', $gPreferences['system_date']), array('type' => 'date', 'maxLength' => 10)); $form->addSubmitButton('btn_send_' . $member->getValue('mem_id'), $gL10n->get('SYS_OK')); $roleMemHTML .= $form->show(false); $roleMemHTML .= '</div></li> <li class="list-group-item" id="member_info_' . $member->getValue('mem_id') . '_Content" style="display: none;">'; // show informations about user who creates the recordset and changed it $roleMemHTML .= admFuncShowCreateChangeInfoById($member->getValue('mem_usr_id_create'), $member->getValue('mem_timestamp_create'), $member->getValue('mem_usr_id_change'), $member->getValue('mem_timestamp_change')) . ' </li> </ul> </li>'; $countShowRoles++; } } if ($countShowRoles == 0) { $roleMemHTML = '<div class="block-padding">' . $gL10n->get('PRO_NO_ROLES_VISIBLE') . '</div>'; } else { $roleMemHTML .= '</ul>'; } if ($directOutput) { echo $roleMemHTML; return ''; } else { return $roleMemHTML; } }
/** * Adds all active memberships of the child role to the parent role. * If a membership still exists than start date will not be changed. Only * the end date will be set to 31.12.9999. * @return Returns -1 if no parent or child row exists */ public function updateMembership() { if ($this->roleIdParent > 0 && $this->roleIdChild > 0) { $sql = 'SELECT mem_usr_id FROM ' . TBL_MEMBERS . ' WHERE mem_rol_id = ' . $this->roleIdChild . ' AND mem_begin <= \'' . DATE_NOW . '\' AND mem_end > \'' . DATE_NOW . '\''; $membershipStatement = $this->db->query($sql); if ($membershipStatement->rowCount()) { $member = new TableMembers($this->db); while ($row = $membershipStatement->fetch()) { $member->startMembership($this->roleIdParent, $row['mem_usr_id']); } } return 0; } return -1; }