예제 #1
0
function updatePreview($file_id, $resource)
{
    $objResponse =& new xajaxResponse();
    $CFile = new CFile($file_id);
    $path_file = $CFile->path . 'sm_' . $CFile->name;
    if ($CFile->image_size['height'] > portfolio::PREVIEW_MAX_HEIGHT || $CFile->image_size['width'] > portfolio::PREVIEW_MAX_WIDTH) {
        $CFile = $CFile->resizeImage($path_file, portfolio::PREVIEW_MAX_WIDTH, portfolio::PREVIEW_MAX_HEIGHT, 'auto', true);
    } else {
        $CFile = uploader::remoteCopy($CFile->id, $CFile->table, $CFile->path, false, 'sm_f_');
    }
    uploader::sclear($resource);
    // Чистим заменяем
    uploader::screateFile($CFile, $resource);
    $callback = uploader::getCallback(uploader::sgetTypeUpload($resource));
    $template = uploader::getTemplate('uploader.file', 'portfolio/');
    $template = str_replace(array('{idFile}', '{fileName}'), array($CFile->id, $CFile->original_name), $template);
    $objResponse->script("\n        \$\$('#work_preview_file .qq-upload-list').set('html', '{$template}');\n        \$\$('#work_preview_file .qq-upload-list .qq-upload-file').set('href', '" . WDCPREFIX . "/{$path_file}');\n        \$\$('#work_preview_file .qq-upload-list .qq-uploader-fileID').show();\n    ");
    $objResponse->script("\n        \$\$('#work_preview_file .qq-upload-delete').addEvent('click', function() {\n            new Request.JSON({\n                url: '/uploader.php',\n                onSuccess: function(resp) {\n                    if(resp.success) {\n                        \$\$('#work_preview_file .qq-upload-list').set('html', '');\n                        if(resp.onComplete !== undefined) {\n                            eval(resp.onComplete);\n                        }\n                    }  \n                }\n            }).post({\n                'action': 'remove',\n                'files' : [{$CFile->id}],\n                'resource': '{$resource}',\n                'u_token_key': '{$_SESSION['rand']}'\n            });\n        });\n    ");
    $objResponse->script($callback);
    return $objResponse;
}
예제 #2
0
/**
* Добавляет жалобу на проект.
*
* @param    integer     $project_id     ID проекта
* @param    integer     $user_id        ID пользователя
* @param    integer     $type           тип жалобы
* @param    string      $msg            текст жалобы
* @param    string      $files          имена загруженных скриншотов
*
* @return                               xajax responce
*/
function SendComplain($project_id, $type, $msg, $files)
{
    global $session;
    session_start();
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_complains.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/userecho.php';
    $objResponse = new xajaxResponse();
    $project_id = (int) $project_id;
    $user_id = get_uid(false);
    $type = (int) $type;
    $msg = __paramValue('htmltext', $msg);
    $error = false;
    $project = new projects();
    $prj = $project->GetPrj(0, $project_id, 1);
    $file_list = array();
    if ($files != '') {
        $files = uploader::sgetFiles($files);
        if (!empty($files)) {
            $emp = new users();
            $emp->GetUser($emp->GetField($prj['user_id'], $ee, 'login'));
            $dir = 'users/' . substr($emp->login, 0, 2) . '/' . $emp->login . '/upload/';
            foreach ($files as $file) {
                $copy = uploader::remoteCopy($file['id'], 'file_projects', $dir);
                $rfiles[] = $copy->name;
                $file_list[] = array('name' => $copy->original_name, 'link' => WDCPREFIX . '/' . $copy->path . $copy->name);
            }
            $files = implode(',', $rfiles);
        } else {
            $files = '';
        }
    }
    if (!$files) {
        $files = '';
    }
    if (projects::IsHaveComplainType($project_id, $user_id, $type)) {
        // Уже жаловался
        return $objResponse;
    }
    $projects_complains = new projects_complains();
    $type_name = $projects_complains->GetComplainType($type);
    $project_url = getAbsUrl(getFriendlyURL('project', $project_id));
    $is_moder = $projects_complains->isComplainTypeModer($type);
    if ($is_moder) {
        $userEcho = new UserEcho();
        $topic_message = $userEcho->constructMessage($project_url, $prj['name'], $msg, $file_list);
        $topicUrl = $userEcho->newTopicComplain($type_name, $topic_message, $file_list);
        if ($topicUrl) {
            messages::sendProjectComplain($user_id, $project_url, $prj['name'], $msg, $topicUrl);
        } else {
            $error = true;
        }
    }
    if (!$error) {
        $error = projects::AddComplain($project_id, $user_id, $type, $msg, $files, $is_moder && $topicUrl);
    }
    if ($error) {
        $objResponse->script("\$('abuse_project_popup').toggleClass('b-shadow_hide');");
        if ($is_moder) {
            $objResponse->script("\$('abuse-cause-error').removeClass('b-layout__txt_hide'); abuseResetSelection();");
        } else {
            $objResponse->script("\$\$('.abuse-btn-send').removeClass('b-button_rectangle_color_disable')");
        }
    } else {
        $upl = array('umask' => uploader::umask('prj_abuse'), 'validation' => array('allowedExtensions' => array('jpg', 'gif', 'png', 'jpeg'), 'restrictedExtensions' => array()), 'text' => array('uploadButton' => iconv('cp1251', 'utf8', 'Прикрепить файлы')));
        $objResponse->script("\n            \$('abuse{$type}').addClass('abuse-checked');\n            \$('abuse{$type}').getChildren().each(function(el) { \$(el).addClass('abuse-checked'); });\n        ");
        $objResponse->script("uploader.create('abuse_uploader', " . json_encode($upl) . ');');
        $objResponse->script("\$('prj_abuse_msg').set('value', '')");
        $objResponse->script("\$\$('.abuse-btn-send').removeClass('b-button_disabled')");
        $objResponse->script("\$('abuse_project_popup').toggleClass('b-shadow_hide');");
        $objResponse->script("\$('project_abuse_success').removeClass('b-layout__txt_hide');");
        $objResponse->script("\$('form_abuse').hide();");
        $objResponse->script("setTimeout(\"\$('project_abuse_success').addClass('b-layout__txt_hide')\", 5000);");
        if ($is_moder) {
            $objResponse->script("\$('abuse-cause-error').addClass('b-layout__txt_hide');");
        }
    }
    return $objResponse;
}
예제 #3
0
 public function editWork($uid, $params)
 {
     global $DB;
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/uploader/uploader.php';
     $params = self::prepareWork($params);
     $error = self::validateWork($params);
     $work_id = $params['id'];
     if (!empty($error)) {
         return $error;
     }
     $update = array('link' => $params['link'], 'name' => antispam($params['work_name']), 'descr' => antispam($params['work_descr']), 'cost' => $params['work_cost'], 'cost_type' => $params['work_cost_type_db_id'], 'time_value' => $params['time_cost'], 'time_type' => $params['work_time_type_db_id'], 'prev_type' => $params['work_preview_type'], 'prof_id' => $params['work_category_db_id']);
     if ($params['video'] != '') {
         $video_link = video_validate($params['video']);
         $video_link = preg_replace("/^http:\\/\\//", '', $video_link);
         $update['video_link'] = $video_link;
         $update['is_video'] = true;
     } else {
         $update['video_link'] = '';
         $update['is_video'] = false;
     }
     if ($uid == $_SESSION['uid'] && !hasPermissions('users')) {
         // автор, не админ, не про меняет заголовок либо текст - отправить на модерирование
         $update['moderator_status'] = !is_pro() ? '0' : '-2';
     }
     if ($params['position_num'] !== NULL) {
         $update['norder'] = intval($params['position_num']);
     }
     $dir = 'users/' . substr($_SESSION['login'], 0, 2) . "/{$_SESSION['login']}/upload/";
     if (isset($params['IDResource']) && is_array($params['IDResource'])) {
         foreach ($params['IDResource'] as $resource) {
             $resources[uploader::sgetTypeUpload($resource)] = $resource;
         }
         if (isset($resources['portfolio'])) {
             $mainFile = current(uploader::sgetFiles($resources['portfolio']));
             if (!empty($mainFile)) {
                 // Если что-то загрузили и не удаляли
                 $MFile = uploader::remoteCopy($mainFile['id'], 'file', $dir, false);
                 uploader::sclear($resources['portfolio']);
                 // Делаем отдельное привью из оригинальной большой картинки  -- @todo ХЗ зачем но раньше так делали
                 if (in_array($MFile->getext(), $GLOBALS['graf_array']) && $MFile->getext() != 'swf') {
                     $MFile->resizeImage($dir . 'tn_' . $MFile->name, self::PREVIEW_MAX_WIDTH, self::PREVIEW_MAX_HEIGHT, 'auto', true);
                 }
                 $update['pict'] = $MFile->name;
                 $is_remove_main_file = true;
             }
         }
         if (isset($resources['pf_preview'])) {
             $preview = current(uploader::sgetFiles($resources['pf_preview']));
             if (!empty($preview)) {
                 // Если что-то загрузили и не удаляли
                 $PFile = uploader::remoteCopy($preview['id'], 'file', $dir, false, 'sm_f_');
                 uploader::sclear($resources['pf_preview']);
                 $update['prev_pict'] = $PFile->name;
                 $is_remove_preview_file = true;
             }
         }
     }
     if ($params['main_file'] == '' && !isset($MFile)) {
         // Удаляем файл
         $update['pict'] = '';
         $is_remove_main_file = true;
     }
     if ($params['preview_file'] == '' && !isset($PFile)) {
         // Удаляем файл
         $update['prev_pict'] = '';
         $is_remove_preview_file = true;
     }
     if ($is_remove_main_file) {
         $cf = new CFile();
         $cf->Delete(0, $dir, $params['old_main_file']);
         // удаляем ранее загруженный файл
     }
     if ($is_remove_preview_file) {
         $cf = new CFile();
         $cf->Delete(0, $dir, $params['old_preview_file']);
         // удаляем ранее загруженный файл
     }
     if (empty($error)) {
         $wmodeAllowValues = array('direct', 'gpu', 'window');
         if (!in_array($params['wmode'], $wmodeAllowValues)) {
             $params['wmode'] = 'window';
         }
         if ($work_id) {
             $update['edit_date'] = 'NOW()';
             $result = $DB->update('portfolio', $update, 'id = ?i AND user_id = ?i', $work_id, $uid);
         } else {
             $update['user_id'] = $uid;
             $result = $DB->insert('portfolio', $update, 'id');
             $work_id = $result;
         }
         if ($MFile && $MFile->getext() == 'swf' && $MFile->id) {
             $res = $DB->query('UPDATE swf_file_params SET wmode = ?, table_name = ? WHERE fid = ?i', $params['wmode'], $MFile->table, $MFile->id);
             if (pg_affected_rows($res) == 0) {
                 $res = $DB->query('INSERT INTO swf_file_params (fid, wmode, table_name) VALUES(?i, ?, ?)', $MFile->id, $params['wmode'], $MFile->table);
             }
         } else {
             if (!$MFile) {
                 $ext = preg_replace("#.*(\\.[a-zA-Z0-9]*)\$#", '$1', $params['main_file']);
                 if (strtolower($ext) == '.swf') {
                     $res = $DB->query('UPDATE swf_file_params SET wmode = ? WHERE fid = (SELECT id FROM file WHERE fname = ?)', $params['wmode'], $params['main_file']);
                     if (pg_affected_rows($res) == 0) {
                         $res = $DB->query('INSERT INTO swf_file_params (fid, wmode, table_name) VALUES( ( SELECT id  FROM file WHERE fname = ?) , ?, ?)', $params['main_file'], $params['wmode'], 'file');
                     }
                 }
             }
         }
     } else {
         return $error;
     }
     if ($work_id && $result && !is_pro()) {
         /*require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php' );
                     require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php' );
         
                     $stop_words = new stop_words();
                     $nStopWordsCnt = $stop_words->calculate($update['name'], $update['descr']);
                     $DB->insert('moderation', array('rec_id' => $work_id, 'rec_type' => user_content::MODER_PORTFOLIO, 'stop_words_cnt' => $nStopWordsCnt));*/
     }
     return $result;
 }