Example #1
0
 public static function generateId($length)
 {
     $idExists = true;
     while ($idExists) {
         $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
         $id = '';
         for ($i = 0; $i < $length - 2; $i++) {
             $id .= $chars[rand(0, strlen($chars) - 1)];
         }
         $id = 'a_' . $id;
         $idExists = ChannelAction::exists(array('id' => $id));
     }
     return $id;
 }
Example #2
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;
 }
Example #3
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;
 }
Example #4
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()));
 }
Example #5
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);
 }
Example #6
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()));
 }
Example #7
0
 public function erase()
 {
     ChannelAction::table()->delete(array("complementary_id" => $this->id, "type" => "message"));
     $this->delete();
 }
Example #8
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()));
 }
Example #9
0
							</div>

						</div>
						
					</div>

				</div> <!-- .top -->

				<div class="bottom">

					<div class="inner">

						<nav id="header-menu-nav">
							<ul>
							<?php 
$nb_notifs = Session::isActive() ? ChannelAction::count(array('conditions' => "timestamp > " . Session::get()->last_visit . " AND recipients_ids LIKE '%;" . Session::get()->id . ";%'")) : 0;
$notifs = $nb_notifs > 0 ? 'data-new="' . $nb_notifs . '"' : '';
?>
								<li <?php 
echo in_array(Utils::getCurrentURI(), array('', 'home')) ? 'class="current"' : '';
?>
><a href="<?php 
echo WEBROOT;
?>
"><?php 
echo Translator::get("header.menu.home");
?>
</a></li>
								<li <?php 
echo Utils::getCurrentURI() == 'news' ? 'class="current"' : '';
?>
Example #10
0
 public function destroy($id, $request)
 {
     $channel = UserChannel::find($id);
     if ($channel->owner_id == Session::get()->id && $channel->id != Session::get()->getMainChannel()->id) {
         Video::table()->delete(array('poster_id' => $channel->id));
         ChannelAction::table()->delete(array("channel_id" => $id));
         ChannelAction::table()->delete(array("target" => $id));
         $channel->delete();
         Subscription::cleanDeleted();
         return new Response(200);
     } else {
         return new Response(500);
     }
 }