예제 #1
0
 /**
  * Отсылаем уведомление о бане пользователя в сообществе
  * @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;
 }
예제 #2
0
/**
 * Генерирует ЧПУ ссылки
 *
 * @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;
}
예제 #3
0
            $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'];
}