コード例 #1
0
ファイル: file.php プロジェクト: ragi79/Textcube
function copyRecusive($source, $target, $chkPrint = false)
{
    if (Path::getBaseName($source) == "." || Path::getBaseName($source) == "..") {
        return;
    }
    if (!is_dir($source)) {
        copy($source, $target);
        return;
    }
    if (!file_exists($target) || !is_dir($target)) {
        mkdir($target);
        @chmod($target, 0777);
    }
    $d = dir($source);
    while ($entry = $d->read()) {
        copyRecusive("{$source}/{$entry}", "{$target}/{$entry}", $chkPrint);
    }
    $d->close();
}
コード例 #2
0
ファイル: api.php プロジェクト: Avantians/Textcube
function api_addAttachment($blogid, $parent, $file)
{
    $pool = DBModel::getInstance();
    $attachment = array();
    $attachment['parent'] = $parent ? $parent : 0;
    $attachment['label'] = Path::getBaseName($file['name']);
    $label = Utils_Unicode::lessenAsEncoding($attachment['label'], 64);
    $attachment['size'] = $file['size'];
    $extension = Path::getExtension($attachment['label']);
    switch (strtolower($extension)) {
        case '.exe':
        case '.php':
        case '.sh':
        case '.com':
        case '.bat':
            $extension = '.xxx';
            break;
    }
    /* Create directory for owner */
    $path = __TEXTCUBE_ATTACH_DIR__ . "/{$blogid}";
    if (!is_dir($path)) {
        mkdir($path);
        if (!is_dir($path)) {
            return false;
        }
        @chmod($path, 0777);
    }
    $pool->reset('Attachments');
    $pool->setQualifier('blogid', 'eq', $blogid);
    $pool->setQualifier('parent', 'eq', $parent);
    $pool->setQualifier('label', 'eq', $label, true);
    $oldFile = $pool->getCell('name');
    if ($oldFile !== null) {
        $attachment['name'] = $oldFile;
    } else {
        $attachment['name'] = rand(1000000000, 9999999999) . $extension;
        while (Attachment::doesExist($attachment['name'])) {
            $attachment['name'] = rand(1000000000, 9999999999) . $extension;
        }
    }
    $attachment['path'] = "{$path}/{$attachment['name']}";
    deleteAttachment($blogid, -1, $attachment['name']);
    if ($file['content']) {
        $f = fopen($attachment['path'], "w");
        if (!$f) {
            return false;
        }
        $attachment['size'] = fwrite($f, $file['content']);
        fclose($f);
        $file['tmp_name'] = $attachment['path'];
    }
    if ($imageAttributes = @getimagesize($file['tmp_name'])) {
        $attachment['mime'] = $imageAttributes['mime'];
        $attachment['width'] = $imageAttributes[0];
        $attachment['height'] = $imageAttributes[1];
    } else {
        $attachment['mime'] = Utils_Misc::getMIMEType($extension);
        $attachment['width'] = 0;
        $attachment['height'] = 0;
    }
    $attachment['mime'] = Utils_Unicode::lessenAsEncoding($attachment['mime'], 32);
    @chmod($attachment['path'], 0666);
    $pool->reset('Attachments');
    $pool->setAttribute('blogid', $blogid);
    $pool->setAttribute('parent', $attachment['parent']);
    $pool->setAttribute('name', $attachment['name'], true);
    $pool->setAttribute('label', $label, true);
    $pool->setAttribute('mime', $attachment['mime'], true);
    $pool->setAttribute('size', $attachment['size'], true);
    $pool->setAttribute('width', $attachment['width']);
    $pool->setAttribute('height', $attachment['height']);
    $pool->setAttribute('attached', Timestamp::getUNIXtime());
    $pool->setAttribute('downloads', 0);
    $pool->setAttribute('enclosure', 0);
    $result = $pool->insert();
    if (!$result) {
        @unlink($attachment['path']);
        return false;
    }
    return $attachment;
}
コード例 #3
0
ファイル: blogskin.php プロジェクト: webhacking/Textcube
 function __construct($filename)
 {
     $context = Model_Context::getInstance();
     if (!($sval = file_get_contents($filename))) {
         Respond::ErrorPage("KeywordSkin");
     }
     $origPath = $context->getProperty('uri.service') . substr($filename, strlen(ROOT));
     $origPath = substr($origPath, 0, 0 - strlen(Path::getBaseName($origPath)));
     $sval = str_replace('./', $origPath, $sval);
     replaceSkinTag($sval, 'html');
     replaceSkinTag($sval, 'head');
     replaceSkinTag($sval, 'body');
     list($sval, $this->keylogItem) = $this->cutSkinTag($sval, 'blog_rep');
     list($sval, $this->keylog) = $this->cutSkinTag($sval, 'blog');
     $this->outter = $sval;
 }
コード例 #4
0
ファイル: index.php プロジェクト: webhacking/Textcube
						if(isIE) 
							uploader = window.parent.document.getElementById("uploader");
						else 
							uploader = window.parent.document.getElementById("uploader2");
					} catch(e) {		
						uploader = null;	
					}
					
					if (uploader!=null) {
						uploader.SetVariable('/:openBroswer','true');
					}
				}
<?php 
if (count($_FILES) == 1) {
    $file = array_pop($_FILES);
    if (getAttachmentByLabel($blogid, $suri['id'], Path::getBaseName($file['name']))) {
        print 'alert("' . _t('동일한 이름을 가진 파일이 이미 첨부되었습니다.') . '");';
        ?>

				for( i=0; i<oSelect.options.length; i++) {
					if(oSelect.options[i].value == "<?php 
        echo escapeJSInCData($_POST['fileName']);
        ?>
") {
						oSelect.remove(i);
					}
				}
<?php 
    } else {
        if (($attachment = addAttachment($blogid, $suri['id'], $file)) === false) {
            print 'alert("' . _t('첨부하지 못했습니다.') . '");';
コード例 #5
0
ファイル: blog.skin.php プロジェクト: hinablue/TextCube
 function KeylogSkin($filename)
 {
     global $service, $serviceURL;
     if (!($sval = file_get_contents($filename))) {
         Respond::ErrorPage("KeywordSkin");
     }
     $origPath = $serviceURL . substr($filename, strlen(ROOT));
     $origPath = substr($origPath, 0, 0 - strlen(Path::getBaseName($origPath)));
     $sval = str_replace('./', $origPath, $sval);
     replaceSkinTag($sval, 'html');
     replaceSkinTag($sval, 'head');
     replaceSkinTag($sval, 'body');
     list($sval, $this->keylogItem) = $this->cutSkinTag($sval, 'blog_rep');
     list($sval, $this->keylog) = $this->cutSkinTag($sval, 'blog');
     $this->outter = $sval;
 }
コード例 #6
0
ファイル: skin.php プロジェクト: ni5am/Textcube
function setSkinSetting($blogid, $setting)
{
    global $skinSetting;
    // Legacy global support. TODO: DELETE THIS LINE AFTER CHECK EVERY REFERENCES IN WHOLE SOURCE
    importlib('blogskin');
    $blogid = getBlogId();
    if (strncmp($context->getProperty('skin.skin'), 'customize/', 10) == 0) {
        if (strcmp($context->getProperty('skin.skin'), "customize/{$blogid}") != 0) {
            return false;
        }
    } else {
        $skinSetting['skin'] = Path::getBaseName($context->getProperty('skin.skin'));
        // Legacy global support. TODO: DELETE THIS LINE AFTER CHECK EVERY REFERENCES IN WHOLE SOURCE
        $context->setProperty('skin.skin', $skinSetting['skin']);
        if ($context->getProperty('skin.skin') === '.' || $context->getProperty('skin.skin') === '..') {
            return _t('실패 했습니다');
        }
    }
    $skinpath = getSkinPath($context->getProperty('skin.skin'));
    if (!is_dir($skinpath)) {
        return _t('실패 했습니다');
    }
    foreach ($setting as $key => $value) {
        Setting::setSkinSetting($key, $value, $blogid);
    }
    Setting::setSkinSetting('skin', $context->getProperty('skin.skin'), $blogid);
    Setting::setBlogSetting('useMicroformat', $setting['useMicroformat'], true);
    Setting::setBlogSetting('useAjaxComment', $setting['useAjaxComment'], true);
    Setting::setBlogSetting('useFOAF', $setting['useFOAF'] == 1 ? 1 : 0, true);
    Setting::setBlogSetting('entriesOnPage', $setting['entriesOnPage'], true);
    Setting::setBlogSetting('entriesOnList', $setting['entriesOnList'], true);
    CacheControl::flushCategory();
    CacheControl::flushTag();
    CacheControl::flushSkin();
    Setting::getSkinSettings($blogid, true);
    // refresh skin cache
    return true;
}
コード例 #7
0
ファイル: index.php プロジェクト: ragi79/Textcube
function getAddAttachment($file)
{
    global $database, $serviceURL;
    requireComponent('Textcube.Function.misc');
    requireComponent('Textcube.Data.Attachment');
    Attachment::confirmFolder();
    if (empty($file['name']) || $file['error'] != 0) {
        return false;
    }
    $attachment = array();
    $attachment['ext'] = Misc::getFileExtension(Path::getBaseName($file['name']));
    $path = __TEXTCUBE_ATTACH_DIR__ . "/" . getBlogId() . "/team";
    if (!is_dir($path)) {
        mkdir($path);
        if (!is_dir($path)) {
            return false;
        }
        @chmod($path, 0777);
    }
    do {
        $attachment['name'] = rand(1000000000, 9999999999.0) . "." . $attachment['ext'];
        $attachment['path'] = "{$path}/{$attachment['name']}";
    } while (file_exists($attachment['path']));
    if (!move_uploaded_file($file['tmp_name'], $attachment['path'])) {
        return false;
    }
    @chmod($attachment['path'], 0666);
    $tmpImage = POD::queryCell("SELECT image FROM {$database['prefix']}TeamUserSettings WHERE blogid=" . getBlogId() . " and userid=" . getUserId());
    if (!POD::execute("UPDATE {$database['prefix']}TeamUserSettings SET image='" . $attachment['name'] . "', updated=UNIX_TIMESTAMP() WHERE blogid=" . getBlogId() . " and userid=" . getUserId())) {
        @unlink($attachment['path']);
        $result = "{$serviceURL}/resources/image/spacer.gif";
    } else {
        $result = "{$serviceURL}/attach/" . getBlogId() . "/team/" . $attachment['name'];
    }
    if (!empty($tmpImage)) {
        @unlink($path . "/" . $tmpImage);
    }
    return $result;
}
コード例 #8
0
ファイル: blog.skin.php プロジェクト: hinablue/TextCube
function setSkinSetting($blogid, $setting)
{
    global $database;
    global $skinSetting;
    requireLibrary('blog.skin');
    $blogid = getBlogId();
    if (strncmp($skinSetting['skin'], 'customize/', 10) == 0) {
        if (strcmp($skinSetting['skin'], "customize/{$blogid}") != 0) {
            return false;
        }
    } else {
        $skinSetting['skin'] = Path::getBaseName($skinSetting['skin']);
        if ($skinSetting['skin'] === '.' || $skinSetting['skin'] === '..') {
            return _t('실패 했습니다');
        }
    }
    $skinpath = ROOT . '/skin/blog/' . $skinSetting['skin'];
    if (!is_dir($skinpath)) {
        return _t('실패 했습니다');
    }
    foreach ($setting as $key => $value) {
        Setting::setSkinSetting($key, $value, $blogid);
    }
    Setting::setSkinSetting('skin', $skinSetting['skin'], $blogid);
    Setting::setBlogSetting('useMicroformat', $setting['useMicroformat'], true);
    Setting::setBlogSetting('useAjaxComment', $setting['useAjaxComment'], true);
    Setting::setBlogSetting('useFOAF', $setting['useFOAF'] == 1 ? 1 : 0, true);
    Setting::setBlogSetting('entriesOnPage', $setting['entriesOnPage'], true);
    Setting::setBlogSetting('entriesOnList', $setting['entriesOnList'], true);
    CacheControl::flushCategory();
    CacheControl::flushTag();
    CacheControl::flushSkin();
    Setting::getSkinSettings($blogid, true);
    // refresh skin cache
    return true;
}
コード例 #9
0
ファイル: index.php プロジェクト: Avantians/Textcube
function getAddAttachment($file)
{
    $context = Model_Context::getInstance();
    $pool = DBModel::getInstance();
    Attachment::confirmFolder();
    if (empty($file['name']) || $file['error'] != 0) {
        return false;
    }
    $attachment = array();
    $attachment['ext'] = Utils_Misc::getFileExtension(Path::getBaseName($file['name']));
    $path = __TEXTCUBE_ATTACH_DIR__ . "/" . getBlogId() . "/team";
    if (!is_dir($path)) {
        mkdir($path);
        if (!is_dir($path)) {
            return false;
        }
        @chmod($path, 0777);
    }
    do {
        $attachment['name'] = rand(1000000000, 9999999999) . "." . $attachment['ext'];
        $attachment['path'] = "{$path}/{$attachment['name']}";
    } while (file_exists($attachment['path']));
    if (!move_uploaded_file($file['tmp_name'], $attachment['path'])) {
        return false;
    }
    @chmod($attachment['path'], 0666);
    $pool->reset("TeamUserSettings");
    $pool->setQualifier("blogid", "eq", getBlogId());
    $pool->setQualifier("userid", "eq", getUserId());
    $tmpImage = $pool->getCell("image");
    $pool->reset("TeamUserSettings");
    $pool->setAttribute("image", $attachment['name'], true);
    $pool->setAttribute("updated", Timestamp::getUNIXtime());
    $pool->setQualifier("blogid", "eq", getBlogId());
    $pool->setQualifier("userid", "eq", getUserId());
    if (!$pool->update()) {
        @unlink($attachment['path']);
        $result = $context->getProperty("uri.service") . "/resources/image/spacer.gif";
    } else {
        $result = $context->getProperty("uri.service") . "/attach/" . getBlogId() . "/team/" . $attachment['name'];
    }
    if (!empty($tmpImage)) {
        @unlink($path . "/" . $tmpImage);
    }
    return $result;
}
コード例 #10
0
ファイル: attachment.php プロジェクト: Avantians/Textcube
function addAttachment($blogid, $parent, $file)
{
    $pool = DBModel::getInstance();
    if (empty($file['name']) || $file['error'] != 0) {
        return false;
    }
    $pool->reset('Attachments');
    $pool->setQualifier('blogid', 'equals', $blogid);
    $pool->setQualifier('parent', 'equals', $parent);
    $pool->setQualifier('label', 'equals', $file['name'], true);
    if ($pool->getCount() > 0) {
        return false;
    }
    $attachment = array();
    $attachment['parent'] = $parent ? $parent : 0;
    $attachment['label'] = Path::getBaseName($file['name']);
    $attachment['size'] = $file['size'];
    $extension = Utils_Misc::getFileExtension($attachment['label']);
    switch (strtolower($extension)) {
        case 'exe':
        case 'php':
        case 'sh':
        case 'com':
        case 'bat':
            $extension = 'xxx';
            break;
    }
    if (strlen($extension) > 6 || $extension == '') {
        $extension = 'xxx';
    }
    $path = __TEXTCUBE_ATTACH_DIR__ . "/{$blogid}";
    if (!is_dir($path)) {
        mkdir($path);
        if (!is_dir($path)) {
            return false;
        }
        @chmod($path, 0777);
    }
    do {
        $attachment['name'] = rand(1000000000, 9999999999) . ".{$extension}";
        $attachment['path'] = "{$path}/{$attachment['name']}";
    } while (file_exists($attachment['path']));
    if (!move_uploaded_file($file['tmp_name'], $attachment['path'])) {
        return false;
    }
    @chmod($attachment['path'], 0666);
    if ($imageAttributes = @getimagesize($attachment['path'])) {
        $attachment['mime'] = $imageAttributes['mime'];
        $attachment['width'] = $imageAttributes[0];
        $attachment['height'] = $imageAttributes[1];
    } else {
        $attachment['mime'] = Utils_Misc::getMIMEType($extension);
        $attachment['width'] = 0;
        $attachment['height'] = 0;
    }
    $attachment['label'] = Utils_Unicode::lessenAsEncoding($attachment['label'], 64);
    $attachment['mime'] = Utils_Unicode::lessenAsEncoding($attachment['mime'], 32);
    $pool->reset('Attachments');
    $pool->setAttribute('blogid', $blogid);
    $pool->setAttribute('parent', $attachment['parent']);
    $pool->setAttribute('name', $attachment['name'], true);
    $pool->setAttribute('label', $attachment['label'], true);
    $pool->setAttribute('mime', $attachment['mime'], true);
    $pool->setAttribute('size', $attachment['size'], true);
    $pool->setAttribute('width', $attachment['width']);
    $pool->setAttribute('height', $attachment['height']);
    $pool->setAttribute('attached', Timestamp::getUNIXtime());
    $pool->setAttribute('downloads', 0);
    $pool->setAttribute('enclosure', 0);
    $result = $pool->insert();
    if (!$result) {
        @unlink($attachment['path']);
        return false;
    }
    return $attachment;
}
コード例 #11
0
ファイル: blog.api.php プロジェクト: hinablue/TextCube
function api_addAttachment($blogid, $parent, $file)
{
    global $database;
    $attachment = array();
    $attachment['parent'] = $parent ? $parent : 0;
    $attachment['label'] = Path::getBaseName($file['name']);
    $label = POD::escapeString(UTF8::lessenAsEncoding($attachment['label'], 64));
    $attachment['size'] = $file['size'];
    $extension = Path::getExtension($attachment['label']);
    switch (strtolower($extension)) {
        case '.exe':
        case '.php':
        case '.sh':
        case '.com':
        case '.bat':
            $extension = '.xxx';
            break;
    }
    /* Create directory for owner */
    $path = ROOT . "/attach/{$blogid}";
    if (!is_dir($path)) {
        mkdir($path);
        if (!is_dir($path)) {
            return false;
        }
        @chmod($path, 0777);
    }
    $oldFile = POD::queryCell("SELECT name FROM {$database['prefix']}Attachments WHERE blogid={$blogid} AND parent={$parent} AND label = '{$label}'");
    if ($oldFile !== null) {
        $attachment['name'] = $oldFile;
    } else {
        $attachment['name'] = rand(1000000000, 9999999999) . $extension;
        while (Attachment::doesExist($attachment['name'])) {
            $attachment['name'] = rand(1000000000, 9999999999) . $extension;
        }
    }
    $attachment['path'] = "{$path}/{$attachment['name']}";
    deleteAttachment($blogid, -1, $attachment['name']);
    if ($file['content']) {
        $f = fopen($attachment['path'], "w");
        if (!$f) {
            return false;
        }
        $attachment['size'] = fwrite($f, $file['content']);
        fclose($f);
        $file['tmp_name'] = $attachment['path'];
    }
    if ($imageAttributes = @getimagesize($file['tmp_name'])) {
        $attachment['mime'] = $imageAttributes['mime'];
        $attachment['width'] = $imageAttributes[0];
        $attachment['height'] = $imageAttributes[1];
    } else {
        $attachment['mime'] = Misc::getMIMEType($extension);
        $attachment['width'] = 0;
        $attachment['height'] = 0;
    }
    $attachment['mime'] = UTF8::lessenAsEncoding($attachment['mime'], 32);
    @chmod($attachment['path'], 0666);
    $result = POD::query("insert into {$database['prefix']}Attachments values ({$blogid}, {$attachment['parent']}, '{$attachment['name']}', '{$label}', '{$attachment['mime']}', {$attachment['size']}, {$attachment['width']}, {$attachment['height']}, UNIX_TIMESTAMP(), 0,0)");
    if (!$result) {
        @unlink($attachment['path']);
        return false;
    }
    return $attachment;
}