Exemplo n.º 1
0
 public static function sendNew($sender, $conversation, $content, $timeOffset = 0)
 {
     $id = Message::generateId(6);
     $timestamp = Utils::tps() + $timeOffset;
     $message = Message::create(array('id' => $id, 'sender_id' => $sender, 'conversation_id' => $conversation, 'content' => $content, 'timestamp' => $timestamp));
     $recep = array();
     $members = explode(';', trim(Conversation::find($conversation)->members_ids, ';'));
     foreach ($members as $id) {
         if ($id != $sender) {
             $recep[] = trim(UserChannel::find($id)->admins_ids, ';');
         }
     }
     $recep = ';' . implode(';', $recep) . ';';
     $recep = ChannelAction::filterReceiver($recep, "pm");
     ChannelAction::create(array('id' => ChannelAction::generateId(6), 'channel_id' => userChannel::find($sender)->id, 'recipients_ids' => $recep, 'type' => 'pm', 'target' => $conversation, 'timestamp' => $timestamp));
     return $message;
 }
Exemplo n.º 2
0
 public static function postNew($authorId, $videoId, $commentContent, $parent)
 {
     $timestamp = Utils::tps();
     $poster_channel = UserChannel::find(Video::find($videoId)->poster_id);
     $admins_ids = $poster_channel->admins_ids;
     $admins_ids = ChannelAction::filterReceiver($admins_ids, "comment");
     $admin_ids_array = $poster_channel->getArrayAdminsIds($admins_ids);
     foreach ($admin_ids_array as $k => $value) {
         if ($value == Session::get()->id) {
             unset($admin_ids_array[$k]);
             break;
         }
     }
     $recipients_ids = ';' . trim(implode(';', $admin_ids_array), ';') . ';';
     $comment = Comment::create(array('id' => Comment::generateId(6), 'poster_id' => $authorId, 'video_id' => $videoId, 'comment' => $commentContent, 'likes' => 0, 'dislikes' => 0, 'timestamp' => $timestamp, 'parent' => $parent));
     ChannelAction::create(array('id' => ChannelAction::generateId(6), 'channel_id' => $authorId, 'recipients_ids' => $recipients_ids, 'type' => 'comment', 'target' => $videoId, 'complementary_id' => $comment->id, 'timestamp' => $timestamp));
     return $comment;
 }
Exemplo n.º 3
0
 public static function sendUploadNotification($videoId, $channelId)
 {
     ChannelAction::create(array('id' => ChannelAction::generateId(6), 'channel_id' => $channelId, 'recipients_ids' => ChannelAction::filterReceiver(';' . implode(';', Subscription::getSubscribersFromChannelAsList($channelId)) . ';', "upload"), 'type' => 'upload', 'target' => $videoId, 'timestamp' => Utils::tps()));
 }
Exemplo n.º 4
0
 public function update($id, $request)
 {
     $req = $request->getParameters();
     if (!Session::isActive()) {
         return Utils::getUnauthorizedResponse();
     }
     if ($video = Video::find($id)) {
         if (isset($req['video-edit-submit'], $req['video-title'], $req['video-description'], $req['video-tags'])) {
             $data = array();
             $data['currentPageTitle'] = $video->title . ' - Modification';
             if (UserChannel::find(Video::find($id)->poster_id)->belongToUser(Session::get()->id) || Session::get()->isModerator() || Session::get()->isAdmin()) {
                 $data['video'] = $video;
                 $title = $req['video-title'];
                 $description = $req['video-description'];
                 $tags = $req['video-tags'];
                 $visibility = $req['video-visibility'];
                 if (Utils::validateVideoInfo($title, $description, $tags) && in_array($visibility, array(0, 1, 2))) {
                     $video->updateInfo($title, $description, $tags, $req['_FILES_']['tumbnail'], $visibility);
                     $data['video'] = $video;
                     $response = new ViewResponse('video/edit', $data);
                     $response->addMessage(ViewMessage::success('Votre video a bien été modifiée !'));
                     return $response;
                 } else {
                     $response = new ViewResponse('video/edit', $data);
                     $response->addMessage(ViewMessage::error('Les informations ne sont pas valides.'));
                     return $response;
                 }
             }
         } else {
             if (isset($req['flag']) && !empty($req['flag'])) {
                 $flag = $req['flag'];
                 if ($flag == 'false' && (Session::get()->isModerator() || Session::get()->isAdmin())) {
                     $video->unFlag(Session::get()->id);
                     return new Response(200);
                 } else {
                     if ($flag == 'true') {
                         $video->flag(Session::get()->id);
                         return new Response(200);
                     }
                 }
             } else {
                 if (isset($req['suspend']) && !empty($req['suspend']) && (Session::get()->isModerator() || Session::get()->isAdmin())) {
                     $suspend = $req['suspend'];
                     if ($suspend == 'false') {
                         $video->unSuspend(Session::get()->id);
                         return new Response(200);
                     } else {
                         if ($suspend == 'true') {
                             $video->suspend(Session::get()->id);
                             return new Response(200);
                         }
                     }
                 } else {
                     if (isset($req['like'])) {
                         $userId = Session::get()->id;
                         if (!$video->isLikedByUser($userId)) {
                             if ($video->isDislikedByUser($userId)) {
                                 $video->removeDislike($userId);
                             }
                             $video->like($userId);
                             return new Response(200);
                         }
                     } else {
                         if (isset($req['dislike'])) {
                             $userId = Session::get()->id;
                             if (!$video->isDislikedByUser($userId)) {
                                 if ($video->isLikedByUser($userId)) {
                                     $video->removeLike($userId);
                                 }
                                 $video->dislike($userId);
                                 return new Response(200);
                             }
                         } else {
                             if (isset($req['unlike'])) {
                                 $userId = Session::get()->id;
                                 if ($video->isLikedByUser($userId)) {
                                     $video->removeLike($userId);
                                     return new Response(200);
                                 }
                             } else {
                                 if (isset($req['undislike'])) {
                                     $userId = Session::get()->id;
                                     if ($video->isDislikedByUser($userId)) {
                                         $video->removeDislike($userId);
                                         return new Response(200);
                                     }
                                 } else {
                                     if (isset($req['discover']) && (Session::get()->isModerator() || Session::get()->isAdmin())) {
                                         $video->discover = Utils::tps();
                                         $video->save();
                                         $author = $video->getAuthor();
                                         $receiver = ChannelAction::filterReceiver($author->admins_ids, "staff_select");
                                         ChannelAction::create(['id' => ChannelAction::generateId(6), 'channel_id' => $author->id, 'recipients_ids' => $receiver, 'type' => 'staff_select', 'target' => $video->id, 'timestamp' => Utils::tps()]);
                                         return new Response(200);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return new Response(500);
 }
Exemplo n.º 5
0
 public function unsubscribe($subscriber)
 {
     Subscription::unsubscribeUserFromChannel($subscriber, $this);
     $unsubscriberUser = User::find_by_id($subscriber);
     $unsubscribingChannel = $this;
     $channel_id = $this->id;
     ChannelAction::create(array('id' => ChannelAction::generateId(6), 'channel_id' => $unsubscriberUser->getMainChannel()->id, 'recipients_ids' => ChannelAction::filterReceiver($unsubscribingChannel->admins_ids, "unsubscription"), 'type' => 'unsubscription', 'target' => $channel_id, 'timestamp' => Utils::tps()));
 }
Exemplo n.º 6
0
 public function sendWelcomeNotification()
 {
     ChannelAction::create(array('id' => ChannelAction::generateId(6), 'channel_id' => $this->getMainChannel()->id, 'recipients_ids' => ";" . $this->id . ";", 'type' => 'welcome', 'target' => $this->id, 'timestamp' => Utils::tps()));
 }
Exemplo n.º 7
0
 public function update($id, $request)
 {
     $req = $request->getParameters();
     $data = $req;
     $data['current'] = 'channels';
     $name = @$req['name'];
     $descr = @$req['description'];
     $admins = @json_decode($req['_admins']);
     if (isset($req['editChannelSubmit']) && Session::isActive()) {
         $channel = UserChannel::exists($id) ? UserChannel::find($id) : UserChannel::find_by_name($id);
         if (!is_object($channel)) {
             return Utils::getNotFoundResponse();
         }
         if (!$channel->belongToUser(Session::get()->id)) {
             return Utils::getForbiddenResponse();
         }
         $data['mainChannel'] = $channel->isUsersMainChannel(Session::get()->id);
         $data['name'] = $channel->name;
         $data['description'] = $channel->description;
         $data['currentPageTitle'] = $channel->name . ' - Edition';
         $data['owner_id'] = $channel->owner_id;
         $admins_array_ids = explode(';', trim($channel->admins_ids, ';'));
         $data['admins_ids'] = $admins_array_ids;
         $data['admins'] = array();
         foreach ($admins_array_ids as $adm) {
             $data['admins'][] = User::find_by_id($adm)->getMainChannel();
         }
         if (isset($req['name'], $req['description'])) {
             if (strlen($name) >= 3 && strlen($name) <= 40) {
                 if (preg_match("#^[a-zA-Z0-9\\_\\-\\.]+\$#", $name)) {
                     if ($channel->isUsersMainChannel(Session::get()->id)) {
                         if ($channel->name != $req['name']) {
                             $data['name'] = $channel->name;
                             $response = new ViewResponse('channel/edit', $data);
                             $response->addMessage(ViewMessage::error('Vous ne pouvez pas changer le nom de votre chaîne principale !'));
                             return $response;
                         }
                     } else {
                         $adm = trim($channel->admins_ids, ';');
                         $adm = explode(';', $adm);
                         foreach ($admins as $admin) {
                             if ($admin > 0) {
                                 if (!in_array($admin, $adm)) {
                                     $adm[] = $admin;
                                     ChannelAction::create(array('id' => ChannelAction::generateId(6), 'channel_id' => $channel->id, 'recipients_ids' => ';' . $admin . ';', 'type' => 'admin', 'target' => $channel->id, 'timestamp' => Utils::tps()));
                                 }
                             } else {
                                 $value = -1 * $admin;
                                 if (in_array($value, $adm) && $channel->owner_id != $value) {
                                     $id = array_keys($adm, $value);
                                     unset($adm[$id[0]]);
                                     ChannelAction::create(array('id' => ChannelAction::generateId(6), 'channel_id' => $channel->id, 'recipients_ids' => ';' . $admin . ';', 'type' => 'unadmin', 'target' => $channel->id, 'timestamp' => Utils::tps()));
                                 }
                             }
                         }
                         $adm = ';' . implode(';', $adm) . ';';
                     }
                     UserChannel::edit($channel->id, $name, $descr, $adm, $req['_FILES_']['avatar'], $req['_FILES_']['background']);
                     //TODO: Support logo/background
                     $data['channels'] = Session::get()->getOwnedChannels();
                     $data['currentPageTitle'] = 'Mes chaines';
                     $response = new ViewResponse('account/channels', $data);
                     $response->addMessage(ViewMessage::success('Votre chaîne ' . $name . ' a bien été modifiée !'));
                     return $response;
                 } else {
                     $response = new ViewResponse('channel/edit', $data);
                     $response->addMessage(ViewMessage::error('Le nom de la chaîne doit contenir uniquement des lettres (majuscules et minuscules), des traits-d\'union, des _ et des points.'));
                     return $response;
                 }
             } else {
                 $response = new ViewResponse('channel/edit', $data);
                 $response->addMessage(ViewMessage::error('Le nom de la chaîne doit être compris entre 3 et 40 caractères.'));
                 return $response;
             }
         } else {
             $response = new ViewResponse('channel/edit', $data);
             $response->addMessage(ViewMessage::error('Tous les champs doivent être remplis.'));
             return $response;
         }
     } else {
         if (isset($req['subscribe'])) {
             if (Session::isActive()) {
                 $channel = UserChannel::exists($id) ? UserChannel::find($id) : UserChannel::find_by_name($id);
                 if (is_object($channel) && !$channel->belongToUser(Session::get()->id)) {
                     $channel->subscribe(Session::get()->id);
                     $response = new Response(200);
                     return $response;
                 }
             } else {
                 return new Response(500);
             }
         } else {
             if (isset($req['unsubscribe'])) {
                 if (Session::isActive()) {
                     $channel = UserChannel::exists($id) ? UserChannel::find($id) : UserChannel::find_by_name($id);
                     if (is_object($channel) && !$channel->belongToUser(Session::get()->id)) {
                         $channel->unsubscribe(Session::get()->id);
                         $response = new Response(200);
                         return $response;
                     }
                 } else {
                     return new Response(500);
                 }
             } else {
                 if (isset($req['admin_edit'])) {
                     if (Session::isActive()) {
                         $channel = UserChannel::exists($id) ? UserChannel::find($id) : UserChannel::find_by_name($id);
                         if (!$channel) {
                             return Utils::getNotFoundResponse();
                         }
                         if (!$channel->isUsersMainChannel(Session::get()->id) && $channel->owner_id != Session::get()->id) {
                             if (in_array($channel, Session::get()->getOwnedChannels())) {
                                 $current_admins = $channel->admins_ids;
                                 $current_admins = trim($current_admins, ";");
                                 $current_admins = explode(";", $current_admins);
                                 foreach ($current_admins as $k => $admin) {
                                     if ($admin == Session::get()->id) {
                                         unset($current_admins[$k]);
                                         $channel->admins_ids = ";" . implode($current_admins, ";") . ";";
                                         $channel->save();
                                         return new RedirectResponse(WEBROOT . "channel/{$id}");
                                     }
                                 }
                             }
                         }
                     }
                     return Utils::getForbiddenResponse();
                 }
             }
         }
     }
 }