$author_login = $request['author_login']; } elseif ($id) { // edit $name = $comm['name']; $descr = $comm['descr']; $image = $comm['image']; $restrict_type = bitStr2Int($comm['restrict_type']); $group_id = $comm['group_id']; $author_id = $comm['author_id']; $author_login = $comm['author_login']; } if (!($commune_groups = commune::GetGroups())) { $commune_groups = array(); } $action = str_replace('do.', '', $action); $limit = commune::GetUserCommunesLimits(get_uid()); $count = $limit['user_communes_count'] ? "(у вас уже есть {$limit['user_communes_count']})" : ''; $header = $action == 'Create' ? 'Создание вашего сообщества' : '<a style="color:#666" href="?id=' . $comm['id'] . '">Сообщество «' . $comm['name'] . '»</a>'; $aCommExts = explode(',', commune::IMAGE_EXTENSIONS); $sCommExts = "var aCommExts = ['" . implode("','", $aCommExts) . "'];"; ?> <script type="text/javascript"> function commCreate( frm ) { <?php echo $sCommExts; ?> if($('ext_file') == undefined) { if (specificExt(frm['file'].value, aCommExts) ) { frm.submit(); }
/** * Проверяет туда ли попал пользователь и есть ли у него на это право. * Возвращает адрес переброски пользователя, если он не туда попал, * и если не NULL, то надо будет вызвать header(). * Если NULL, но $error не пуст, то надо будет выдать страницу ошибок __COMMUNES__ERROR и * прекратить операцию. * Заодно заполняет необходимые переменные. * * @global $uid Ид пользователя * @global $id Ид сообщения * @global $top_id Ид вкладки ТОП * @global $site Сайт * @global $action Действие для данной функции при отсылке данных (submit) * * @param string $error Возвращает сообщение об ошибке * @param array $comm Возвращает данные по комментариям * @param array $top Возвращает популярные сообщения * @param integer $restrict_type Возвращает тип пользования * @param integer $user_mod Возвращает битовую маску прав пользователя * @return string если не null, название страницы куда перенести пользователя */ function __commShaolin(&$error, &$comm, &$top, &$restrict_type, &$user_mod) { global $uid, $id, $top_id, $site, $action, $draft_id; $comm = NULL; $user_mod = 0; if ($uid) { $user_mod = commune::MOD_ADMIN * hasPermissions('communes'); $user_mod |= commune::MOD_MODER * ($user_mod & commune::MOD_ADMIN || hasPermissions('communes')); $user_mod |= commune::MOD_PRO * (payed::CheckPro(get_login($uid)) ? 1 : 0); $user_mod |= commune::MOD_EMPLOYER * (int) is_emp(); $user_mod |= commune::MOD_BANNED * is_banned($uid); } if (!$id) { if (!$site) { return NULL; } if ($site == 'Create') { if (!$uid) { return '/fbd.php'; } if (!($user_mod & (commune::MOD_PRO | commune::MOD_ADMIN))) { /*if ($user_mod & commune::MOD_EMPLOYER) return '/payed-emp/';*/ return '/proonly.php'; } if (($limit = commune::GetUserCommunesLimits($uid)) && $limit['user_communes_count']) { if ($limit['user_communes_count'] >= commune::MAX_COUNT) { $error['name'] = 'Создание вашего сообщества'; $error['message'] = 'Вы уже создали максимальное количество сообществ.'; return NULL; } $seconds = $limit['seconds_passed_since_user_created_his_last_commune']; if ($seconds < commune::CREATION_INTERVAL) { $error['name'] = 'Создание вашего сообщества'; $wait = commune::CREATION_INTERVAL - $seconds; $error['message'] = "Подождите {$wait} " . getSymbolicName($wait, 'second') . '.'; return NULL; } } } else { return '/404.php'; } return NULL; } if (!($comm = commune::GetCommune($id, !$uid ? NULL : $uid, $user_mod))) { return '/commune/'; } if (!$uid) { if ($action) { return "/commune/?id={$id}"; } if ($site == 'Topic') { } else { if ($site == 'Join') { return '/fbd.php'; } else { if ($site == 'Members') { return '/fbd.php'; } else { if ($site) { return "/commune/?id={$id}"; } } } } } else { if ($uStatus = commune::GetUserCommuneRel($id, $uid)) { $user_mod |= commune::MOD_COMM_MODERATOR * $uStatus['is_moderator']; $user_mod |= commune::MOD_COMM_MANAGER * $uStatus['is_manager']; $user_mod |= commune::MOD_COMM_ADMIN * ($uStatus['is_admin'] || $uStatus['is_moderator'] || $uStatus['is_manager']); $user_mod |= commune::MOD_COMM_AUTHOR * $uStatus['is_author']; $user_mod |= commune::MOD_COMM_ASKED * $uStatus['is_asked']; $user_mod |= commune::MOD_COMM_ACCEPTED * ($uStatus['is_accepted'] || $user_mod & commune::MOD_COMM_ADMIN); $user_mod |= commune::MOD_COMM_BANNED * $uStatus['is_banned']; } } if ($comm['is_blocked'] && !($user_mod & commune::MOD_MODER)) { if ($comm['author_id'] != $uid || $comm['author_id'] == $uid && ($site && $site != 'Members' || $action)) { return '/commune/'; } } if ($user_mod & commune::MOD_COMM_BANNED && !hasPermissions('communes') && $comm['restrict_type'] != '00') { $error['name'] = 'Нет доступа в сообщество'; $error['message'] = 'Вы находитесь в бан-листе этой группы. Вы можете обратиться к создателю группы:<br/><br/>' . '<div style="float:left">' . __commPrntUsrAvtr($comm, 'author_') . '</div>' . '<div style="padding-left:10px;float:left">' . __commPrntUsrInfo($comm, 'author_') . '</div>'; return NULL; } $restrict_type = bitStr2Int($comm['restrict_type']); if ($restrict_type & commune::RESTRICT_READ_MASK) { if ($site != 'Join' && $action != 'Join' && !($user_mod & (commune::MOD_COMM_AUTHOR | commune::MOD_COMM_ACCEPTED | commune::MOD_ADMIN | commune::MOD_MODER))) { $error['name'] = 'Нет доступа в сообщество'; if ($user_mod & commune::MOD_COMM_ASKED) { $error['message'] = " Администратор сообщества <b>«{$comm['name']}»</b> еще не рассмотрел вашу заявку. Просмотр этого сообщества вам не доступен.<br/><br/>" . __commPrntJoinButton($comm, $uid); } else { $error['message'] = " Вы не являетесь членом сообщества <b>«{$comm['name']}»</b>. Просмотр этого сообщества вам не доступен.<br/><br/>" . __commPrntJoinButton($comm, $uid); } return NULL; } } switch ($site) { case 'Join': // if ( $user_mod & commune::MOD_COMM_AUTHOR ) // return "/commune/?id={$id}"; // if ( $user_mod & commune::MOD_COMM_ASKED ) // return "/commune/?id={$id}"; break; case 'Create': if ($id) { return "/commune/?id={$id}"; } break; case 'Edit': if (!($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR))) { return "/commune/?id={$id}"; } break; case 'Admin': if (!($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR))) { if ($user_mod & commune::MOD_COMM_MANAGER) { return "/commune/?id={$id}&site=Admin.members"; } return "/commune/?id={$id}"; } break; case 'Admin.members': if (!($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_MANAGER) || hasPermissions('communes'))) { return "/commune/?id={$id}"; } break; case 'Topic': if ($action && $action != 'do.Edit.post' && $action != 'do.Create.post' && $action != 'add_comment' && $action != 'edit_comment' && $action != 'wysiwygUploadImage') { //if ($action && $action != 'Edit.post') return "/404.php"; } if (!$top_id || !($top = commune::GetTopMessageByAnyOther($top_id, $uid, $user_mod, TRUE)) || $top['member_is_banned'] && $comm['restrict_type'] != '00' && ($action != 'do.Edit.post' && $action != 'do.Create.post') && !($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_MANAGER)) || $top['is_private'] == 't' && $top['user_id'] != $uid && !($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_MANAGER)) || $top['deleted_id'] && !hasPermissions('communes')) { return "/404.php"; } break; case 'Members': break; case 'Newtopic': if (commune::isBannedCommune($user_mod)) { $error['name'] = 'Нет доступа'; $error['message'] = 'Вы находитесь в бан-листе этой группы. Вы можете обратиться к создателю группы:<br/><br/>' . '<div style="float:left">' . __commPrntUsrAvtr($comm, 'author_') . '</div>' . '<div style="padding-left:10px;float:left">' . __commPrntUsrInfo($comm, 'author_') . '</div>'; return NULL; } if (!($user_mod & commune::MOD_COMM_AUTHOR && !$comm['is_blocked']) && !($user_mod & (commune::MOD_ADMIN | commune::MOD_MODER | commune::MOD_COMM_ACCEPTED | commune::MOD_COMM_ADMIN | commune::MOD_COMM_MODERATOR | commune::MOD_COMM_ADMIN))) { return getFriendlyURL('commune_commune', $comm['id']); } break; case 'Editdraft': require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php"; $draftData = drafts::getDraft($draft_id, get_uid(false), 4); if (!$draftData) { return getFriendlyURL('commune_commune', $comm['id']); } break; case 'Edittopic': break; default: if ($site) { return "/404.php"; } break; } if ($action) { if ($action == 'Delete' && !($user_mod & commune::MOD_ADMIN)) { return "/commune/?id={$id}"; } if (!$site) { if (($action == 'do.Edit.post' || $action == 'do.Create.post') && $user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_ACCEPTED)) { return NULL; } if ($action == 'Join') { return NULL; } return "/commune/?id={$id}"; } } return NULL; }