public static function admin($params)
 {
     $format = Utils::getFormat($params['args'], 0, 2);
     $app_url = Settings::getProtected('app_url');
     $db = Settings::getProtected('db');
     $user = User::getAuthenticatedUser();
     // Make sure the user is at least creator or admin
     RoleController::forceClearance(array('system.creator', 'system.admin'), $user);
     // Get latest work for the user's projects
     $latestWorkList = $db->getAdminProjectsLatestWork($user->username, 5);
     $latestWork = array();
     foreach ($latestWorkList as $work) {
         $qn = $work['queue_name'];
         $type = substr($qn, strpos($qn, '.') + 1, strpos($qn, ':') - strpos($qn, '.') - 1);
         $username = substr($qn, strpos($qn, ':') + 1);
         $item = new Item($work['item_id'], $work['project_slug']);
         $project = new Project($work['project_slug']);
         if ($item->project_type == 'system') {
             $transcriptURL = "{$app_url}/projects/" . $item->project_slug . "/items/" . $item->item_id . "/{$type}/{$username}";
             $editURL = "{$app_url}/projects/" . $item->project_slug . "/items/" . $item->item_id . "/edit";
         } else {
             $transcriptURL = "{$app_url}/" . $item->project_owner . "/projects/" . $item->project_slug . "/items/" . $item->item_id . "/{$type}/{$username}";
             $editURL = "{$app_url}/" . $item->project_owner . "/projects/" . $item->project_slug . "/items/" . $item->item_id . "/edit";
         }
         array_push($latestWork, array('item' => $item->getResponse(), 'project' => $project->getResponse(), 'type' => $type, 'username' => $username, 'date_completed' => $work['date_completed'], 'transcript_url' => $transcriptURL, 'edit_url' => $editURL));
     }
     $newestMembers = $db->getNewestProjectMembers($user->username, 5);
     // Only get list of users if they're a site admin
     $users = array();
     if ($user->role == 'admin') {
         $usernameList = $db->getUsers();
         foreach ($usernameList as $username) {
             $tempUser = new User($username['username']);
             $tempUserArray = $tempUser->getResponse();
             // Get list of projects they're working on
             $projects = $db->getUserProjectsWithStats($username['username']);
             $tempUserArray['projects'] = $projects;
             array_push($users, $tempUserArray);
         }
     }
     $response = array('page_title' => 'Admin Dashboard', 'user' => $user->getResponse(), 'latest_work' => $latestWork, 'newest_members' => $newestMembers, 'users' => $users);
     switch ($format) {
         case 'json':
             echo json_encode($response);
             break;
         case 'html':
             Template::render('admin_dashboard', $response);
             break;
     }
 }
Example #2
0
 public function LogoutAction()
 {
     Project::getSecurityManager()->logout();
     Project::getResponse()->redirect(Project::getRequest()->createUrl(null, 'LoginForm'));
 }
Example #3
0
 public function checkForUserBans($user)
 {
     $banHistoryModel = new BanHistoryModel();
     $paramModel = new ParamModel();
     if ($user['banned'] || $banHistoryModel->isBanned($user['id'])) {
         // если забанен , проверить может уже все
         $t_ban_time_sec = $paramModel->getParam("UserController", "T_BAN_TIME_SEC");
         if (time() > $user['banned_date'] + $t_ban_time_sec) {
             $this->load($user['id']);
             $this->banned = 0;
             $this->save();
             $banHistoryModel->unban($user['id'], 1);
         } else {
             Project::getSecurityManager()->logout();
             Project::getResponse()->redirect(Project::getRequest()->createUrl('User', 'Login', null, false) . "/error:ban/login:" . $user['login']);
         }
     }
 }
Example #4
0
 /**
  * Action: Оценка соц.позиции
  */
 public function SocialVoteAddAction()
 {
     $v_request = Project::getRequest();
     $v_sp_id = $v_request->getKeyByNumber(0);
     if ((int) $v_sp_id > 0) {
         $this->_SetVote($v_sp_id, $v_request->inp_criteria_id_1, $v_request->inp_select_1);
         $this->_SetVote($v_sp_id, $v_request->inp_criteria_id_2, $v_request->inp_select_2);
         $this->_SetVote($v_sp_id, $v_request->inp_criteria_id_3, $v_request->inp_select_3);
         // = Запись в таблицу локировки голосования
         $v_sp_votes_model = new SocialVotesModel();
         $v_sp_votes_model->social_pos_id = $v_sp_id;
         $v_sp_votes_model->user_id = (int) Project::getUser()->getDbUser()->id;
         $v_sp_votes_model->ip = $_SERVER['REMOTE_ADDR'];
         $v_sp_votes_model->save();
     }
     Project::getResponse()->redirect($v_request->createUrl('Social', 'SocialView', array($v_sp_id)));
 }
Example #5
0
 public function SaveSubjectAction()
 {
     $request = Project::getRequest();
     $article_model = new ArticleModel();
     if (count($article_model->loadByParentId(0, array(ARTICLE_COMPETITION_STATUS::NEW_ARTICLE), Project::getUser()->getDbUser()->id)) < 5) {
         $article_model->title = $request->title;
         $article_model->articles_tree_id = $request->parent_id;
         $article_model->user_id = Project::getUser()->getDbUser()->id;
         $article_model->rate_status = ARTICLE_COMPETITION_STATUS::NEW_ARTICLE;
         $article_model->creation_date = date("Y-m-d H:i:s");
         $article_model->save();
     }
     Project::getResponse()->redirect($request->createUrl('Article', 'CompetitionCatalog'));
 }
 function CatalogDeleteTagAction()
 {
     $request = Project::getRequest();
     $catalog_id = (int) $request->getKeyByNumber(0);
     $page_number = (int) $request->getKeyByNumber(1);
     $tag_page_number = (int) $request->getKeyByNumber(2);
     $tag_id = (int) $request->getKeyByNumber(3);
     $tag_model = new BlogTagModelSocieties();
     $tag_model->delete($tag_id);
     Project::getResponse()->redirect($request->createUrl('BlogAdminSocieties', 'CatalogEdit', array($catalog_id, $page_number, $tag_page_number)));
 }
Example #7
0
 /**
  * Action: Импортирование закладок - процесс заливания
  */
 public function BookmarksImportMakeAction()
 {
     $v_request = Project::getRequest();
     $data = array();
     //$this->_BaseSiteData($data);
     $data['action'] = 'BookmarksImportMake';
     $data['import_make_url'] = $v_request->createUrl('Bookmarks', 'BookmarksImportMake');
     // Процесс обработки файла
     // Проверка на ошибку
     if ($_FILES['inp_file']['error'] == UPLOAD_ERR_FORM_SIZE) {
         $this->_view->addFlashMessage(FM::ERROR, "Размер загружаемого файла слишком велик.");
         $this->BookmarksImportFormAction();
         return;
     }
     if ($_FILES['inp_file']['error'] == 0 and $_FILES['inp_file']['size'] < self::C_MAX_FILE_UPLOAD_SIZE) {
         // Ошибок нет и размер в границах
         $v_return = $this->_ImportProcess($_FILES['inp_file']['tmp_name']);
         if ($v_return == 1) {
             $this->_view->addFlashMessage(FM::ERROR, "Загружаемый файл не является файлом закладок.");
             $this->BookmarksImportFormAction();
             return;
         }
         $this->BookmarksImportFormAction(true);
         return;
     }
     Project::getResponse()->redirect($v_request->createUrl('Bookmarks', 'BookmarksUser'));
 }
Example #8
0
 public function SetCompetitionAction()
 {
     $request = Project::getRequest();
     if ($request->sub == 0) {
         $id = (int) $request->getKeyByNumber(0);
         $article_tree_model = new ArticleTreeModel();
         $data['node'] = $article_tree_model->load($id);
         $this->_view->SetCompetition($data);
         $this->_view->ajax();
     } else {
         $article_comp_model = new ArticleCompetitionModel();
         $articleTreeId = (int) $request->article_tree_id;
         $dataBegin = $request->data_begin;
         $dataEnd = $request->data_end;
         $art = $article_comp_model->loadWhere($articleTreeId, $dataBegin, $dataEnd);
         var_dump($art);
         if (count($art) <= 0) {
             $article_comp_model->id_article_tree = (int) $request->id;
             $article_comp_model->data_begin = $dataBegin;
             $article_comp_model->data_end = $dataEnd;
             $article_comp_model->reward = $request->reward;
             $article_comp_model->save();
         }
         Project::getResponse()->redirect($request->createUrl('AdminArticle', 'ShowTree'));
     }
 }
Example #9
0
 public function DebateDelThemeAction()
 {
     $debateModel = new DebateModel();
     $request = Project::getRequest();
     $user = Project::getUser()->getDbUser();
     $isAdmin = $user->user_type_id == 1 ? true : false;
     $theme_id = $request->theme_id;
     $theme = $debateModel->getThemeById($theme_id);
     if ($theme && ($isAdmin || $theme['user_id'] == $user->id)) {
         $debateModel->deleteTheme($theme_id);
     }
     Project::getResponse()->redirect(Project::getRequest()->createUrl('Debate', 'Debate'));
 }
Example #10
0
 protected function checkOfficeAccess()
 {
     if (!Project::getUser()->isMyArea()) {
         Project::getResponse()->redirect(Project::getRequest()->createUrl("User", "Profile"));
     }
 }
 public function EditQuestionAction()
 {
     $request = Project::getRequest();
     $id = $request->getKeyByNumber(0);
     $data = array();
     if (!$request->getKeyByNumber(1)) {
         if ($id > 0) {
             $model = new QuestionModel();
             $cat_model = new QuestionCatModel();
             $tag_model = new QuestionTagModel();
             $data['question'] = $model->load($id);
             $data['cat_list'] = $cat_model->loadAll();
             $tags_model = new QuestionTagModel();
             $tags = $tags_model->loadWhere(null, null, $id);
             foreach ($tags as $tag) {
                 $data['tags'] .= $tag['name'] . ', ';
             }
             $data['tags'] = rtrim($data['tags'], ', ');
             $this->BaseAdminData();
             $this->_view->EditQuestion($data);
             $this->_view->ajax();
         }
     } else {
         if ($id > 0) {
             $model = new QuestionModel();
             $model->load($id);
             $model->q_text = $request->question_text;
             $model->questions_cat_id = (int) $request->cat_id;
             $id = $model->save();
             $tag_model = new QuestionTagModel();
             $question_tag_model = new QTagModel();
             $tags_ar = array();
             $tags_ar = explode(",", $request->tags);
             foreach ($tags_ar as $tag) {
                 $tag = trim($tag);
                 if (count($tag_model->loadByName($tag)) > 0) {
                     if (count($question_tag_model->loadWhere($id, $tag_model->id)) <= 0) {
                         $question_tag_model->question_id = $id;
                         $question_tag_model->question_tag_id = $tag_model->id;
                         $question_tag_model->save();
                         $question_tag_model->clear();
                     }
                 } else {
                     $tag_model->name = $tag;
                     $tag_id = $tag_model->save();
                     $tag_model->clear();
                     $question_tag_model->question_id = $id;
                     $question_tag_model->question_tag_id = $tag_id;
                     $question_tag_model->save();
                     $question_tag_model->clear();
                 }
             }
         }
         Project::getResponse()->Redirect($request->createUrl('AdminQuestionAnswer', 'QuestionList'));
     }
 }
Example #12
0
 public function EditCommentAction()
 {
     $request = Project::getRequest();
     $user = Project::getUser()->getDbUser();
     $isAdmin = $user->user_type_id == 1 ? true : false;
     $item_name = $request->item_name;
     switch ($item_name) {
         case 'article':
             $item_controller = 'Article';
             $item_action = 'ArticleView';
             break;
         case 'questions':
             $item_controller = 'QuestionAnswer';
             $item_action = 'ViewQuestion';
             break;
         case 'photo':
             $item_controller = 'Photo';
             $item_action = 'View';
             break;
         case 'bookmarks':
             $item_controller = 'Bookmarks';
             $item_action = 'BookmarksView';
             break;
         case 'social':
             $item_controller = 'Social';
             $item_action = 'SocialView';
             break;
         case 'blog':
             $item_controller = 'Blog';
             $item_action = 'Comments';
             break;
     }
     $comment_model = new CommentModel($item_name . '_comment', $item_name . '_id', $request->comment_id);
     if ($request->change_comment && ($isAdmin || $comment_model->user_id == $user->id)) {
         $warning_id = 0;
         if ($request->warning_text) {
             $warningModel = new WarningModel();
             $warning_id = $warningModel->add($comment_model->user_id, $request->warning_text);
         }
         $comment_model->editComment($comment_model->user_id, $warning_id, $request->editCommentArea, (int) $isAdmin);
     }
     Project::getResponse()->redirect($request->createUrl($item_controller, $item_action, array($request->element_id)));
 }
Example #13
0
 function ActionDeleteAction()
 {
     if ($this->request->id) {
         $a = new ActionModel();
         $a->delete($this->request->id);
     }
     Project::getResponse()->redirect($this->request->createUrl('Dev', 'Actions', array('cid' => $this->request->cid)));
 }
Example #14
0
 public function addDesktopAction()
 {
     $v_request = Project::getRequest();
     $v_session = Project::getSession();
     if ($v_request->action == 'change') {
         $userModel = new UserModel();
         $desktops = unserialize($userModel->getDesktops());
         $desktops[$v_request->d] = $v_request->vklad_name;
         $desktops = serialize($desktops);
         $userModel->addDesktop($desktops);
     } elseif ($v_request->action == 'del') {
         $userModel = new UserModel();
         $desktops = unserialize($userModel->getDesktops());
         unset($desktops[$v_request->d]);
         $desktops = serialize($desktops);
         $userModel->addDesktop($desktops);
     } else {
         $request_keys = $v_request->getKeys();
         $userModel = new UserModel();
         $desktops = unserialize($userModel->getDesktops());
         //$desktops[] = $v_request['tab_name'];
         $desktops[] = 'Новая вкладка';
         $desktops = serialize($desktops);
         $userModel->addDesktop($desktops);
     }
     if ($v_request->d) {
         Project::getResponse()->redirect(Project::getRequest()->createUrl("Index", "Index", array('d' => $v_request->d)));
     } else {
         Project::getResponse()->redirect(Project::getRequest()->createUrl("Index", "Index"));
     }
 }
 public function DeleteAction()
 {
     $request = Project::getRequest();
     $user_id = (int) Project::getUser()->getDbUser()->id;
     $question_model = new QuestionModel();
     $question_model->load($request->getKeyByNumber(0));
     if ($question_model->user_id == $user_id) {
         $question_model->delete($request->getKeyByNumber(0));
     }
     Project::getResponse()->redirect($request->createUrl('QuestionAnswer', 'UserQuestions'));
 }
 public static function import($params)
 {
     $appUrl = Settings::getProtected('app_url');
     $themeRoot = Settings::getProtected('theme_root');
     $format = Utils::getFormat($params['args'], 1, 3);
     $projectType = Utils::getProjectType($params['args']);
     $projectSlug = $projectType == 'system' ? $params['args'][0] : $params['args'][2];
     $user = User::getAuthenticatedUser();
     // Load the project
     $project = new Project($projectSlug);
     RoleController::forceClearance(array('project.admin', 'project.owner', 'system.admin'), $user, array('project' => $project));
     if ($project->title == '') {
         Utils::redirectToDashboard('', 'Error loading project.');
     }
     if ($project->type == 'system') {
         $projectUrl = "projects/" . $project->slug;
     } else {
         if ($project->type == 'user') {
             $projectUrl = "users/" . $project->owner . "/projects/" . $project->slug;
         }
     }
     $project->getItems();
     $projectArray = $project->getResponse();
     $projectArray['items'] = $project->items;
     $projectArray['url'] = "{$appUrl}/{$projectUrl}";
     switch ($params['method']) {
         // GET: Get transcript import page
         case 'GET':
             $response = array('page_title' => 'Import Transcript', 'user' => $user->getResponse(), 'project' => $projectArray);
             switch ($format) {
                 case 'json':
                     echo json_encode(array('status' => 'success', 'response' => $response));
                     break;
                 case 'html':
                     Template::render('import', $response);
                     break;
             }
             break;
             // POST: Update transcripts for items
         // POST: Update transcripts for items
         case 'POST':
             $template = Utils::POST('template');
             $transcript = Utils::POST('transcript');
             $items = Utils::POST('items');
             $projectSlug = Utils::POST('projectSlug');
             $status = 'success';
             // Split the transcript
             $splitTranscripts = TranscriptController::splitTranscript($transcript, $template);
             // Make sure the number of items still matches, otherwise return error
             if (count($splitTranscripts) != count($items)) {
                 $status = 'error';
             }
             // Update each item's transcript
             for ($i = 0; $i < count($items); $i++) {
                 $item = new Item($items[$i], $projectSlug);
                 $item->transcript = $splitTranscripts[$i];
                 if (!$item->save()) {
                     $status = 'error';
                     break;
                 }
             }
             echo json_encode(array('status' => $status));
             break;
     }
 }
 function DeleteParamAction()
 {
     $request = Project::getRequest();
     $model = new ParamModel();
     $model->delete($request->id);
     Project::getResponse()->redirect($request->createUrl('AdminParameter', 'EditGroup', array('id' => $request->cid)));
 }
 public static function itemProof($params)
 {
     $i18n = Settings::getProtected('i18n');
     $format = Utils::getFormat($params['args'], 0, 2);
     $projectType = Utils::getProjectType($params['args']);
     $projectSlugIndex = $projectType == 'system' ? 0 : 2;
     $projectSlug = $params['args'][$projectSlugIndex];
     $project = new Project($projectSlug);
     $itemIndex = $projectType == 'system' ? 1 : 3;
     $itemId = $params['args'][$itemIndex];
     $proofTypeIndex = $projectType == 'system' ? 2 : 4;
     $proofType = $params['args'][$proofTypeIndex];
     $role = $proofType . "er";
     $proofUserIndex = $projectType == 'system' ? 3 : 5;
     $proofUser = array_key_exists($proofUserIndex, $params['args']) ? $params['args'][$proofUserIndex] : '';
     $owner = $projectType == 'user' ? $params['args'][1] : '';
     $user = User::getAuthenticatedUser();
     switch ($params['method']) {
         // GET: Get proof/review/edit page for this item
         case 'GET':
             // Make sure they have access to the item
             if ($proofType == 'edit' || $proofUser != '') {
                 // For editing an item or a specific proof/review, user must be project admin or site admin
                 RoleController::forceClearance(array('project.admin', 'project.owner', 'system.admin'), $user, array('project' => $project));
             } else {
                 // User has to be a member of the project
                 if (!$user->isMember($projectSlug, $role)) {
                     Utils::redirectToDashboard("", $i18n->t("error.not_a_member"));
                     return;
                 }
             }
             // If we're looking at an existing proof/review, load it for that user
             // Otherwise load it for the existing user
             $username = $proofUser != '' ? $proofUser : $user->username;
             // Load the item
             $itemObj = new Item($itemId, $projectSlug, $username, $proofType);
             // Make sure it exists (if it fails, it'll return a boolean)
             if ($itemObj->item_id == -1) {
                 Utils::redirectToDashboard("", $i18n->t("error.nonexistent_item"));
                 return;
             }
             $alreadyFinished = false;
             $moreToProof = false;
             if ($proofType != 'edit' && $proofUser == '') {
                 // If it's not in their current queue, they're editing it after finishing it
                 // TODO: Make this part more elegant
                 $userCurrentQueue = new Queue("user.{$proofType}:{$user->username}", false);
                 $userCurrentQueueItems = $userCurrentQueue->getItems();
                 if (!in_array($itemObj, $userCurrentQueueItems)) {
                     $alreadyFinished = true;
                 }
                 // And if it's not in their full queue, they never had it and shouldn't be allowed to proof it
                 $userQueue = new Queue("user.{$proofType}:{$user->username}", false, array('include-removed' => true));
                 $userQueueItems = $userQueue->getItems();
                 if (!in_array($itemObj, $userQueueItems)) {
                     Utils::redirectToDashboard("", $i18n->t("error.insufficient_rights"));
                     return;
                 }
                 // See if there are any items left for us to proof
                 $queue = new Queue("project.{$proofType}:{$projectSlug}");
                 foreach ($queue->getItems() as $item) {
                     if (!in_array($item, $userQueueItems)) {
                         $moreToProof = true;
                         break;
                     }
                 }
             }
             $item = array();
             $item['id'] = $itemId;
             $item['title'] = $itemObj->title;
             // If the user has a transcript for this item, load it instead
             if ($itemObj->userTranscript && trim($itemObj->userTranscript['transcript']) != '') {
                 $transcript = trim($itemObj->userTranscript['transcript']);
             } else {
                 $transcript = trim($itemObj->transcript);
             }
             $item['transcript'] = stripslashes($transcript);
             // Get fields, if any
             if ($itemObj->userTranscript && trim($itemObj->userTranscript['fields']) != '') {
                 $itemFields = json_decode(trim($itemObj->userTranscript['fields']), true);
             } else {
                 $itemFields = array();
             }
             $item['fields'] = $itemFields;
             // Prepare the URL
             $appUrl = Settings::getProtected('app_url');
             if ($projectType == 'system') {
                 $projectUrl = "projects/{$projectSlug}";
             } else {
                 if ($projectType == 'user') {
                     $projectUrl = "users/{$owner}/{$projectSlug}";
                 }
             }
             $item['href'] = $projectUrl . "/" . $itemObj->href;
             // Get template type
             $templateType = $itemObj->type;
             // Get project fields and parse out
             $fields = array();
             $fieldsText = trim($project->fields);
             if ($fieldsText != '') {
                 $fieldsLines = explode("\n", $fieldsText);
                 foreach ($fieldsLines as $line) {
                     $fieldLabel = '';
                     $fieldType = '';
                     $fieldValues = array();
                     // Split it by label and type/parameters
                     list($fieldLabel, $fieldSettings) = array_map('trim', explode(":", $line));
                     if (strpos($fieldSettings, ' - ') == FALSE) {
                         $fieldType = trim($fieldSettings);
                     } else {
                         list($fieldType, $fieldValueStr) = array_map('trim', explode(" - ", $fieldSettings));
                         $fieldValues = explode(" | ", $fieldValueStr);
                     }
                     // Reformat the field ID
                     $fieldId = str_replace(" ", "_", strtolower($fieldLabel));
                     $field = array('id' => $fieldId, 'label' => $fieldLabel, 'type' => $fieldType, 'values' => $fieldValues);
                     array_push($fields, $field);
                 }
             }
             // Get any editor-specific config settings
             $editors = Settings::getProtected('editors');
             $editorOptions = array_key_exists($templateType, $editors) ? $editors[$templateType] : array();
             $pageTitle = ucfirst($proofType) . " " . $item['title'];
             if ($proofUser) {
                 $pageTitle .= " ({$proofUser})";
             }
             $pageTitle .= " | " . $project->title;
             // Display the template
             $options = array('page_title' => $pageTitle, 'user' => $user->getResponse(), 'item' => $item, 'project' => $project->getResponse(), 'more_to_proof' => $moreToProof, 'already_finished' => $alreadyFinished, 'editor_options' => $editorOptions, 'editor_type' => $templateType, 'proof_user' => $proofUser, 'proof_type' => $proofType, 'fields' => $fields, 'css' => array("editors/{$templateType}/{$templateType}.css"), 'js' => array("editors/{$templateType}/{$templateType}.js"));
             Template::render("editors/{$templateType}", $options);
             break;
     }
 }
Example #19
0
 public function ListSaveAction()
 {
     $request_user_id = (int) Project::getUser()->getShowedUser()->id;
     $user_id = (int) Project::getUser()->getDbUser()->id;
     $login = Project::getUser()->getDbUser()->login;
     $request = Project::getRequest();
     if ($user_id !== $request_user_id) {
         // Can't save somebody's album
         $this->ListAction();
         return;
     }
     $album = USER_UPLOAD_DIR . DIRECTORY_SEPARATOR . $login . DIRECTORY_SEPARATOR . 'album' . DIRECTORY_SEPARATOR;
     $thumbs = $album . 'thumbs' . DIRECTORY_SEPARATOR;
     $images = $album . 'images' . DIRECTORY_SEPARATOR;
     clearstatcache();
     if (is_array($request->album_id)) {
         foreach ($request->album_id as $album_id) {
             $album_model = new AlbumModel();
             $album_model->load($album_id);
             // Проверка, является ли пользователем владельцем альбома
             if ((int) $album_model->id > 0 && (int) $album_model->user_id === $user_id) {
                 if (isset($request->delete[$album_id])) {
                     // Delete album
                     $photo_model = new PhotoModel();
                     $list = $photo_model->loadByAlbum($album_id);
                     foreach ($list as $item) {
                         $f = $thumbs . $item['path'];
                         if (file_exists($f) && is_file($f)) {
                             unlink($f);
                         }
                         $f = $images . $item['thumbnail'];
                         if (file_exists($f) && is_file($f)) {
                             unlink($f);
                         }
                         $photo_model->delete($item['id']);
                     }
                     $album_model->delete($album_id);
                 } else {
                     $album_model->is_onmain = isset($request->is_onmain[$album_id]) ? 1 : 0;
                     $album_model->access = isset($request->album_access[$album_id]) ? $request->album_access[$album_id] : ACCESS::MYSELF;
                     $album_model->name = isset($request->album_name[$album_id]) ? $request->album_name[$album_id] : $album_model->name;
                     $album_model->save();
                 }
             }
         }
     }
     Project::getResponse()->redirect($request->createUrl('Album', 'List'));
 }
Example #20
0
 public function SubscribeNewsAction()
 {
     $request = Project::getRequest();
     if ($request->subscribe) {
         $newsModel = new NewsModel();
         $user = Project::getUser()->getDbUser();
         $newsModel->setNewsSubscribe($user->id, $request->news_tree_feeds);
     }
     Project::getResponse()->redirect(Project::getRequest()->createUrl('News', 'News'));
 }
Example #21
0
 public function AddEntityAction()
 {
     $request = Project::getRequest();
     $this->setViewVars();
     $this->setFormParams();
     $geo_type = new GeoTypeModel();
     $geo_type->load($this->session->geo_type_id);
     $this->_view->assign('geo_type_name', $geo_type->name);
     $city = new CityModel();
     $city->load($this->session->city_id);
     $this->_view->assign('city_name', $city->name);
     $country = new CountryModel();
     $country->load($this->session->country_id);
     $this->_view->assign('country_name', $country->name);
     $place = new GeoPlaceModel();
     $place->loadById($this->session->geo_place_id);
     $this->_view->assign('place_name', $place->name);
     // Creating type
     if ($request->create_type) {
         $this->_view->clearFlashMessages();
         if ($request->type_name) {
             // Creating type
             $obj = new GeoSubtypeModel();
             $obj->name = htmlspecialchars($request->type_name);
             $obj->geo_type_id = $this->session->geo_type_id;
             $obj->save();
             Project::getResponse()->redirect(Project::getRequest()->createUrl("Places", "Index"));
         } else {
             $this->_view->addFlashMessage(FM::ERROR, 'Введите название типа');
         }
     }
     // Creating place
     if ($request->create_place) {
         $this->_view->clearFlashMessages();
         if ($request->place_name) {
             // Creating type
             $obj = new GeoPlaceModel();
             $obj->name = htmlspecialchars($request->place_name);
             $obj->geo_subtype_id = $this->session->geo_subtype_id;
             $obj->city_id = $this->session->city_id;
             $obj->user_id = $this->user->id;
             $obj->creation_date = date("Y-m-d H:i:s");
             $obj->save();
             Project::getResponse()->redirect(Project::getRequest()->createUrl("Places", "Index"));
         } else {
             $this->_view->addFlashMessage(FM::ERROR, 'Введите название места');
         }
     }
     // Adding place to user
     if ($request->create_object_at_user) {
         $obj = new UsersGeoPlaceModel();
         $obj->user_id = $this->user->id;
         $obj->geo_place_id = $this->session->geo_place_id;
         $obj->date_start = htmlspecialchars($request->year_begin);
         $obj->date_end = htmlspecialchars($request->year_end);
         $obj->surname = htmlspecialchars($request->surname);
         $obj->save();
         Project::getResponse()->redirect(Project::getRequest()->createUrl("Places", "Index"));
     }
     // Editing place at user
     if ($request->edit_object_at_user) {
         $obj = new UsersGeoPlaceModel();
         $obj->load($request->id);
         $obj->date_start = htmlspecialchars($request->year_begin);
         $obj->date_end = htmlspecialchars($request->year_end);
         $obj->surname = htmlspecialchars($request->surname);
         $obj->save();
         Project::getResponse()->redirect(Project::getRequest()->createUrl("Places", "Index"));
     }
     $this->_view->ListPlaces();
     $this->_view->parse();
 }
Example #22
0
 function DoSubscribeAction()
 {
     $request = Project::getRequest();
     $request_user_id = (int) Project::getUser()->getShowedUser()->id;
     $user_id = (int) Project::getUser()->getDbUser()->id;
     if ($user_id) {
         $subscribeModel = new BlogSubscribeModel();
         $subscribe_id = $subscribeModel->isSubscribed($user_id, $request->tree_id);
         $subscribeModel->load($subscribe_id);
         if ($subscribeModel->id) {
             $subscribeModel->delete($subscribe_id);
         } else {
             $subscribeModel->user_id = $user_id;
             $subscribeModel->ub_tree_id = $request->tree_id;
             $subscribeModel->save();
         }
     }
     Project::getResponse()->redirect($_SERVER['HTTP_REFERER']);
 }
Example #23
0
 public function messageDeleteAction()
 {
     $model = new GroupsModel();
     $model->deleteMessage($this->request['mid']);
     Project::getResponse()->redirect(Project::getRequest()->createUrl('Groups', 'messagesView') . '/pid:' . $this->request['pid'] . '/tid:' . $this->request['tid']);
 }
Example #24
0
 public function ChangeRelationAction()
 {
     $request = Project::getRequest();
     $relation = new RelationsModel();
     $user = Project::getUser()->getShowedUser();
     $relation->setRelation($this->_view->current_user->id, $user->id, $request->relation_text);
     // Send message
     $m = new MessagesController();
     $m->sendMessage('Отношение', 'Пользователь ' . $this->_view->current_user->login . ' указал свое отношение к вам. Чтобы просмотреть что именно было указано, <a href="' . $request->createUrl('User', 'Profile', null, $this->_view->current_user->login) . '">перейдите в профиль пользователя ' . $this->_view->current_user->login . '</a>.', $this->_view->current_user->id, $user->id, 0, 0, 0, 1);
     // ------------
     Project::getResponse()->redirect(Project::getRequest()->createUrl("User", "Profile"));
 }
Example #25
0
 public function SaveAction()
 {
     $request_user_id = (int) Project::getUser()->getShowedUser()->id;
     $user_id = (int) Project::getUser()->getDbUser()->id;
     $login = Project::getUser()->getDbUser()->login;
     $request = Project::getRequest();
     $album = USER_UPLOAD_DIR . DIRECTORY_SEPARATOR . $login . DIRECTORY_SEPARATOR . 'album' . DIRECTORY_SEPARATOR;
     $thumbs = $album . 'thumbs' . DIRECTORY_SEPARATOR;
     $images = $album . 'images' . DIRECTORY_SEPARATOR;
     clearstatcache();
     $album_id = 0;
     if (is_array($request->photo_id)) {
         foreach ($request->photo_id as $photo_id) {
             $photo_id = (int) $photo_id;
             $photo_model = new PhotoModel();
             $photo_model->load($photo_id);
             // Проверка, является ли пользователем владельцем альбома
             if ((int) $photo_model->id > 0 && (int) $photo_model->user_id === $user_id) {
                 if (isset($request->photo_del[$photo_id])) {
                     // Delete album
                     $f = $thumbs . $photo_model->path;
                     if (file_exists($f) && is_file($f)) {
                         unlink($f);
                     }
                     $f = $images . $photo_model->thumbnail;
                     if (file_exists($f) && is_file($f)) {
                         unlink($f);
                     }
                     $photo_model->delete($photo_id);
                 } else {
                     $photo_model->is_rating = isset($request->is_rating[$photo_id]) ? 1 : 0;
                     $photo_model->is_onmain = isset($request->is_onmain[$photo_id]) ? 1 : 0;
                     $photo_model->access = (int) $request->photo_access[$photo_id];
                     $photo_model->name = isset($request->photo_name[$photo_id]) ? $request->photo_name[$photo_id] : $photo_model->name;
                     $photo_model->save();
                     if ($album_id == 0) {
                         $album_id = (int) $photo_model->album_id;
                     }
                 }
             }
         }
     }
     if ($album_id > 0) {
         $album_model = new AlbumModel();
         $album_model->load($album_id);
         $album_model->thumbnail_id = (int) $request->thumb_photo;
         $album_model->save();
     }
     Project::getResponse()->redirect($this->getAlbumUrl($album_id, $login));
 }
Example #26
0
 public function FriendAction()
 {
     $request = Project::getRequest();
     $this->_view->clearFlashMessages();
     $user = Project::getUser()->getDbUser();
     $userModel = new UserModel();
     $friendModel = new FriendModel();
     $messagesModel = new MessagesModel();
     $isDefAction = true;
     //$this -> _view -> addFlashMessage(FM::ERROR, "Выберите из списка друзей или введите имя вручную");
     if ($request->messageAction == "changeGroup") {
         $group_id = $request->group_id;
         $friendGroup = $friendModel->getFriendGroupById($group_id);
         if ($friendGroup) {
             $isDefAction = false;
             if ($request->save_group) {
                 $group_name = $request->group_name;
                 if (!$friendModel->isDublicateGroup($user->id, htmlspecialchars($group_name))) {
                     $friendModel->changeOneValue('friend_group', $group_id, 'name', htmlspecialchars($group_name));
                     Project::getResponse()->redirect(Project::getRequest()->createUrl('Messages', 'Friend'));
                 } else {
                     $this->_view->addFlashMessage(FM::ERROR, "Группа с таким именем уже существует");
                 }
             } elseif ($request->del_group) {
                 $friendModel->changeFriendsGroup($user->id, $group_id, 0);
                 $friendModel->delOneRecord('friend_group', $group_id);
                 Project::getResponse()->redirect(Project::getRequest()->createUrl('Messages', 'Friend'));
             } else {
                 $group_name = $friendGroup['name'];
             }
             $this->_view->assign('pageAction', 'changeGroup');
             $this->_view->assign('groupName', $group_name);
         }
         $this->_view->assign('group_id', $group_id);
     } elseif ($request->messageAction == "changeFriend") {
         $friend_table_id = $request->friend_table_id;
         $friend = $friendModel->getFriendById($friend_table_id);
         if ($friend) {
             if ($request->save_friend) {
                 $friendModel->load($friend_table_id);
                 $friendModel->group_id = $request->group_id;
                 $friendModel->note = htmlspecialchars($request->note);
                 $friendModel->save();
                 Project::getResponse()->redirect(Project::getRequest()->createUrl('Messages', 'Friend'));
             }
             $isDefAction = false;
             $this->_view->assign('pageAction', 'changeFriend');
             $this->_view->assign('friend', $friend);
             $this->_view->assign('aFriendGroups', $friendModel->getUserFriendGroups($user->id));
         }
     } elseif ($request->messageAction == "addGroupFriend") {
         if ($request->add_group) {
             if (!$friendModel->isDublicateGroup($user->id, htmlspecialchars($request->group_name))) {
                 $friendModel->addFriendGroup($user->id, $request->group_name, null);
                 Project::getResponse()->redirect(Project::getRequest()->createUrl('Messages', 'Friend'));
             } else {
                 $this->_view->addFlashMessage(null, "Группа с таким именем уже существует");
             }
         } elseif ($request->add_friend) {
             $friend = $userModel->getUserByLogin($request->friend_name);
             if ($friend && $friendModel->isFriend($user->id, $friend['id'])) {
                 $this->_view->addFlashMessage(FM::ERROR, "Этот пользователь уже добавлен в Ваши друзья");
             } elseif ($friend) {
                 $friendModel->load(0);
                 $friendModel->friend_id = $friend['id'];
                 $friendModel->user_id = $user->id;
                 $friendModel->group_id = 0;
                 $friendModel->save();
                 Project::getResponse()->redirect(Project::getRequest()->createUrl('Messages', 'Friend'));
             } else {
                 $this->_view->addFlashMessage(FM::ERROR, "Пользователя с таким именем нет");
             }
         }
     }
     if ($isDefAction) {
         $this->_view->assign('pageAction', 'main');
     }
     $aGroupMessagesCount = array();
     $aGroupMessagesCount['all'] = array("new" => $messagesModel->getCountMessagesToUser($user->id, -1, 1, 0), "read" => $messagesModel->getCountMessagesToUser($user->id, -1, 1, 1));
     $this->_view->assign('aGroupMessagesCount', $aGroupMessagesCount);
     $aFriendGroups = $friendModel->getUserFriendGroups($user->id);
     $this->_view->assign('tab_list', TabController::getOwnTabs(false, true, false, false, false, false, false, false, false, false));
     $this->_view->assign('aFriendGroups', $aFriendGroups);
     $this->_view->assign('user_id', $user->id);
     $this->_view->FriendPage();
     $this->_view->parse();
 }