/** * Отсылаем уведомление о бане пользователя в сообществе * @see trigger "aIU commune_members/mail" * * @param array $ids Список заблокированных * @param type $connect */ public function CommuneMemberBan($ids, $connect = NULL) { if (!is_array($ids)) { return; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/commune.php'; foreach ($ids as $id) { list($user_id, $commune_id) = explode("-", $id); $user = new users(); $user->GetUserByUID($user_id); if (!$user->email || substr($user->subscr, 5, 1) != '1' || $user->is_banned == '1') { continue; } $comm_link = $GLOBALS['host'] . '/commune/?id=' . $commune_id; $comm = commune::getCommuneInfoForFriendlyURL($commune_id); $this->subject = "Вас заблокировали в сообществе "; $body = $this->subject . ' «<a href="' . $comm_link . $this->_addUrlParams('b', '&') . '">' . $this->ToHtml($comm['name'], 1) . '</a>». '; $this->subject .= "«{$comm['name']}»"; $body .= "К сожалению, теперь вы не можете создавать новые темы и оставлять комментарии в сообществе."; $this->recipient = $user->uname . ' ' . $user->usurname . ' [' . $user->login . '] <' . $user->email . '>'; $this->message = $this->GetHtml($user->uname, $body, array('header' => 'default', 'footer' => 'default'), array('login' => $user->login)); $this->send('text/html'); } return $this->sended; }
/** * Генерирует ЧПУ ссылки * * @param string $type Тип ссылки(project, blog и т.д.) * @param integer|array $data Параметры для ссылки. Если целое, то id объекта в БД, иначе готовый массив $data (см. внутрь). * @return string ЧПУ ссылка */ function getFriendlyURL($type, $data = NULL) { static $url_cache = array(); $url = ''; if (!is_array($data)) { $id = intval($data); $data = NULL; } else { $id = intval($data['id']); } if (!$id) { return NULL; } if ($url_cache[$type][$id]) { return $url_cache[$type][$id]; } switch ($type) { case 'project': if (!$data) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects.php"; $data = projects::getInfoForFriendlyURL($id); } if ($data) { $name = translit(strtolower(htmlspecialchars_decode($data['name'], ENT_QUOTES))); $url = "/projects/{$id}/" . ($name ? "{$name}.html" : ""); } break; case 'blog': require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/blogs.php"; $data = blogs::getMsgInfoForFriendlyURL($id); if ($data) { $name = translit(strtolower(htmlspecialchars_decode($data['name'], ENT_QUOTES))); $category = translit(strtolower(htmlspecialchars_decode($data['category'], ENT_QUOTES))); $url = "/blogs/{$category}/{$id}/" . ($name ? $name . ".html" : ""); } break; case 'blog_group': require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/blogs.php"; $data = blogs::GetGroupName($id); if ($data) { $category = translit(strtolower(htmlspecialchars_decode($data, ENT_QUOTES))); $url = "/blogs/" . ($category ? "{$category}/" : ""); } break; case 'article': require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/articles.php"; $data = articles::getInfoForFriendlyURL($id); if ($data) { $name = translit(strtolower(htmlspecialchars_decode($data['title'], ENT_QUOTES))); $url = "/articles/{$id}/" . ($name ? $name . ".html" : ""); } break; case 'interview': require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/interview.php"; $data = interview::getInfoForFriendlyURL($id); if ($data) { $name = translit(strtolower(htmlspecialchars_decode($data['uname'] . ' ' . $data['usurname'] . ' ' . $data['login'], ENT_QUOTES))); $url = "/interview/{$id}/" . ($name ? $name . ".html" : ""); } break; case 'commune': require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/commune.php"; $data = commune::getMsgInfoForFriendlyURL($id); if ($data) { $category = translit(strtolower(htmlspecialchars_decode($data['group_link'], ENT_QUOTES))); $commune = translit(strtolower(htmlspecialchars_decode($data['commune_name'], ENT_QUOTES))); $name = translit(strtolower(htmlspecialchars_decode($data['name'], ENT_QUOTES))); $commune_id = $data['commune_id']; $url = "/commune/{$category}/{$commune_id}/{$commune}/{$id}/" . ($name ? $name . ".html" : ""); } break; case 'commune_group': require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/commune.php"; $data = commune::getGroupInfoForFriendlyURL($id); if ($data) { $category = translit(strtolower(htmlspecialchars_decode($data['link'], ENT_QUOTES))); $url = "/commune/{$category}/"; } break; case 'commune_commune': require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/commune.php"; $data = commune::getCommuneInfoForFriendlyURL($id); if ($data) { $category = translit(strtolower(htmlspecialchars_decode($data['category_link'], ENT_QUOTES))); $commune = translit(strtolower(htmlspecialchars_decode($data['name'], ENT_QUOTES))); $commune = $commune ? $commune : 'commune'; $url = "/commune/{$category}/{$id}/{$commune}/"; } break; } if ($url) { $url_cache[$type][$id] = $url; } return $url; }
$query_string .= $value; } } header('HTTP/1.1 301 Moved Permanently'); header('Location: ' . getFriendlyURL('commune', intval($_GET['post'])) . ($query_string ? "?{$query_string}" : '')); exit; } if ($_GET['id'] && $_SERVER['REQUEST_METHOD'] != 'POST') { $query_string = preg_replace('/id=' . preg_quote($_GET['id']) . '/', '', $_SERVER['QUERY_STRING']); $query_string = preg_replace('/^&{1,}/', '', $query_string); header('HTTP/1.1 301 Moved Permanently'); header('Location: ' . getFriendlyURL('commune_commune', intval($_GET['id'])) . ($query_string ? "?{$query_string}" : '')); exit; } if ($_GET['communeid']) { $comm_info = commune::getCommuneInfoForFriendlyURL($_GET['communeid']); if (!$comm_info) { header('Location: /404.php'); exit; } else { $url_parts = parse_url($_SERVER['REQUEST_URI']); $friendly_url = getFriendlyURL('commune_commune', $comm_info['id']); if (strtolower($url_parts['path']) != $friendly_url) { header('HTTP/1.1 301 Moved Permanently'); header('Location: ' . $friendly_url); exit; } } $_GET['id'] = $comm_info['id']; $id = $comm_info['id']; }