本文整理汇总了PHP中app\Post::ipString方法的典型用法代码示例。如果您正苦于以下问题:PHP Post::ipString方法的具体用法?PHP Post::ipString怎么用?PHP Post::ipString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类app\Post
的用法示例。
在下文中一共展示了Post::ipString方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getMod
/**
*
*/
public function getMod(Request $request, Board $board, $post)
{
// Validate the request parameters.
if (!($post = $this->validatePost($board, $post)) instanceof Post) {
// If the response isn't a Post, it's a redirect or error.
// Return the message.
return $post;
}
// Take trailing arguments,
// compare them against a list of real actions,
// intersect the liss to find the true commands.
$actions = ["delete", "ban", "all", "global"];
$argList = func_get_args();
$modActions = array_intersect($actions, array_splice($argList, 2));
sort($modActions);
$ban = in_array("ban", $modActions);
$delete = in_array("delete", $modActions);
$all = in_array("all", $modActions);
$global = in_array("global", $modActions);
if (!$ban && !$delete) {
return abort(404);
}
if ($ban) {
if ($global && !$this->user->canBanGlobally()) {
return abort(403);
} else {
if (!$this->user->canBan($board)) {
return abort(403);
}
}
return $this->view(static::VIEW_MOD, ["actions" => $modActions, "form" => "ban", "board" => $board, "post" => $post, "banMaxLength" => $this->option('banMaxLength')]);
} else {
if ($delete) {
if ($global) {
if (!$this->user->canDeleteGlobally()) {
return abort(403);
}
$posts = Post::ipString($post->author_ip)->with('reports')->get();
$this->log('log.post.delete.global', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "ip" => $post->getAuthorIpAsString(), "posts" => $posts->count()]);
$posts->delete();
foreach ($posts as $post) {
Event::fire(new PostWasModerated($post, $this->user));
}
return redirect($board->board_uri);
} else {
if (!$this->user->canDelete($post)) {
return abort(403);
}
if ($all) {
$posts = Post::ipString($post->author_ip)->where('board_uri', $board->board_uri)->with('reports')->get();
$this->log('log.post.delete.local', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "ip" => $post->getAuthorIpAsString(), "posts" => $posts->count()]);
$posts->delete();
foreach ($posts as $post) {
Event::fire(new PostWasModerated($post, $this->user));
}
return redirect($board->board_uri);
} else {
if (!$post->isAuthoredByClient()) {
if ($post->reply_to) {
$this->log('log.post.delete.reply', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "op_id" => $post->op->board_id]);
} else {
$this->log('log.post.delete.op', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "replies" => $post->replies()->count()]);
}
}
$post->delete();
Event::fire(new PostWasModerated($post, $this->user));
if ($post->reply_to) {
return redirect("{$post->board_uri}/thread/{$post->op->board_id}");
} else {
return redirect($board->board_uri);
}
}
}
}
}
return abort(403);
}
示例2: putMod
/**
*
*/
public function putMod(Request $request, Board $board, $post)
{
// Validate the request parameters.
if (!($post = $this->validatePost($board, $post)) instanceof Post) {
// If the response isn't a Post, it's a redirect or error.
// Return the message.
return $post;
}
// Take trailing arguments,
// compare them against a list of real actions,
// intersect the liss to find the true commands.
$actions = ["delete", "ban", "all", "global"];
$argList = func_get_args();
$modActions = array_intersect($actions, array_splice($argList, 2));
sort($modActions);
$ban = in_array("ban", $modActions);
$delete = in_array("delete", $modActions);
$all = in_array("all", $modActions);
$global = in_array("global", $modActions);
if (!$ban) {
return abort(404);
}
$validator = Validator::make(Input::all(), ['raw_ip' => 'required|boolean', 'ban_ip' => 'required_if:raw_ip,true|ip', 'ban_ip_range' => 'required|between:0,128', 'justification' => 'max:255', 'expires_days' => 'required|integer|min:0|max:' . $this->option('banMaxLength'), 'expires_hours' => 'required|integer|min:0|max:23', 'expires_minutes' => 'required|integer|min:0|max:59']);
if (!$validator->passes()) {
return redirect()->back()->withInput(Input::all())->withErrors($validator->errors());
}
$banLengthStr = [];
$expiresDays = Input::get('expires_days');
$expiresHours = Input::get('expires_hours');
$expiresMinutes = Input::get('expires_minutes');
if ($expiresDays > 0) {
$banLengthStr[] = "{$expiresDays}d";
}
if ($expiresHours > 0) {
$banLengthStr[] = "{$expiresHours}h";
}
if ($expiresMinutes > 0) {
$banLengthStr[] = "{$expiresMinutes}m";
}
if ($expiresDays == 0 && $expiresHours == 0 && $expiresMinutes == 0) {
$banLengthStr[] = "Ø";
}
$banLengthStr = implode($banLengthStr, " ");
// If we're banning without the ability to view IP addresses, we will get our address directly from the post in human-readable format.
$banIpAddr = $this->user->canViewRawIP() ? Input::get('ban_ip') : $post->getAuthorIpAsString();
// The CIDR is passed from our post parameters. By default, it is 32/128 for IPv4/IPv6 respectively.
$banCidr = Input::get('ban_ip_range');
// This generates a range from start to finish. I.E. 192.168.1.3/22 becomes [192.168.0.0, 192.168.3.255].
// If we just pass the CDIR into the construct, we get 192.168.1.3-129.168.3.255 for some reason.
$banCidrRange = CIDR::cidr_to_range("{$banIpAddr}/{$banCidr}");
// We then pass this range into the construct method.
$banIp = new CIDR($banCidrRange[0], $banCidrRange[1]);
$ban = new Ban();
$ban->ban_ip_start = inet_pton($banIp->getStart());
$ban->ban_ip_end = inet_pton($banIp->getEnd());
$ban->seen = false;
$ban->created_at = $ban->freshTimestamp();
$ban->updated_at = clone $ban->created_at;
$ban->expires_at = clone $ban->created_at;
$ban->expires_at->addDays($expiresDays);
$ban->expires_at->addHours($expiresHours);
$ban->expires_at->addMinutes($expiresMinutes);
$ban->mod_id = $this->user->user_id;
$ban->post_id = $post->post_id;
$ban->ban_reason_id = null;
$ban->justification = Input::get('justification');
if ($global) {
if ($ban && !$this->user->canBanGlobally() || $delete && !$this->user->canDeleteGlobally()) {
return abort(403);
}
if ($ban) {
$ban->board_uri = null;
$ban->save();
}
$this->log('log.post.ban.global', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "ip" => $post->getAuthorIpAsString(), "justification" => $ban->justification, "time" => $banLengthStr]);
if ($delete) {
$posts = Post::ipString($banIp);
$this->log('log.post.ban.delete', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "posts" => $posts->count()]);
$posts->delete();
return redirect($board->board_uri);
}
} else {
if ($ban && !$board->canBan($this->user) || $delete && !$board->canDelete($this->user)) {
return abort(403);
}
if ($ban) {
$ban->board_uri = $post->board_uri;
$ban->save();
}
$this->log('log.post.ban.local', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "ip" => $post->getAuthorIpAsString(), "justification" => $ban->justification, "time" => $banLengthStr]);
if ($delete) {
if ($all) {
$posts = Post::ipBinary($banIp)->where('board_uri', $board->board_uri);
$this->log('log.post.ban.delete', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "posts" => $posts->count()]);
$posts->delete();
return redirect($board->board_uri);
} else {
//.........这里部分代码省略.........