Example #1
0
/**
* 画像を添付するためのもの
*/
function plugin_show_action()
{
    global $script, $vars, $username;
    global $html_transitional;
    $qm = get_qm();
    //check auth
    $editable = edit_auth($vars['refer'], FALSE, FALSE);
    if (!$editable) {
        return array('msg' => $qm->m['plg_attachref']['title_ntc_admin'], 'body' => '<p>' . $qm->m['plg_attachref']['ntc_admin'] . '</p>');
    }
    //戻り値を初期化
    $retval['msg'] = $qm->m['plg_attachref']['title'];
    $retval['body'] = '';
    if (array_key_exists('attach_file', $_FILES) and array_key_exists('refer', $vars) and is_page($vars['refer'])) {
        $file = $_FILES['attach_file'];
        $attachname = $file['name'];
        $filename = preg_replace('/\\..+$/', '', $attachname, 1);
        //! swfuを持っていたら (管理者のみ)--------------------------------------------
        if ($editable && has_swfu()) {
            //アップロードするファイル名を決める(日本語ダメ、重複もダメ)
            $upload_name = $file['name'];
            if (preg_match('/^[-_.+a-zA-Z0-9]+$/', $upload_name)) {
                while (!$overwrite && file_exists(SWFU_IMAGE_DIR . $upload_name)) {
                    $upload_name = 's_' . $upload_name;
                }
                $upload_file = SWFU_IMAGE_DIR . $upload_name;
                $fname = $upload_name;
                $disp = $qm->m['plg_attachref']['img_desc'];
            } else {
                $matches = array();
                if (!preg_match('/[^.]+\\.(.*)$/', $upload_name, $matches)) {
                    echo 'invalid file name : ' . $upload_name;
                    exit(0);
                }
                $ext = $matches[1];
                $tmp_name = tempnam(SWFU_IMAGE_DIR, 'auto_');
                $upname = $tmp_name . '.' . $ext;
                $disp = $upload_name;
                rename($tmp_name, $upname);
                $upload_file = SWFU_IMAGE_DIR . basename($upname);
                $fname = basename($upname);
            }
            move_uploaded_file($file['tmp_name'], $upload_file);
            chmod($upload_file, 0666);
            //regist db
            $stat = stat($upload_file);
            $data = array('name' => $fname, 'description' => $disp, 'created' => $stat['mtime'], 'size' => $stat['size'], 'page_name' => $vars['refer']);
            require_once SWFU_TEXTSQL_PATH;
            $db = new CTextDB(SWFU_IMAGEDB_PATH);
            $db->insert($data);
            $retval = show_insert_ref(SWFU_IMAGE_DIR . $fname);
            return $retval;
        }
        // open qhm用 attachフォルダにファイルを置く
        //すでに存在した場合、 ファイル名に'_0','_1',...を付けて回避(姑息)
        $count = '_0';
        while (file_exists('./attach/' . encode($vars['refer']) . '_' . encode($attachname))) {
            $attachname = preg_replace('/^[^\\.]+/', $filename . $count++, $file['name']);
        }
        $file['name'] = $attachname;
        require_once PLUGIN_DIR . "attach.inc.php";
        if (!exist_plugin('attach') or !function_exists('attach_upload')) {
            return array('msg' => $qm->m['plg_attachref']['err_notfound']);
        }
        $pass = array_key_exists('pass', $vars) ? $vars['pass'] : NULL;
        $retval = attach_upload($file, $vars['refer'], $pass);
        if ($retval['result'] == TRUE) {
            $retval = show_insert_ref($file['name']);
        }
    } else {
        $retval = show_showform();
        // XHTML 1.0 Transitional
        $html_transitional = TRUE;
    }
    return $retval;
}
Example #2
0
 function insert($table, $datas, $connect)
 {
     $db = new CTextDB();
     return $db->insert($datas, $table);
 }