/**
  * Uploaded files are POSTed here
  */
 public function uploadAction()
 {
     require_once 'models/table/File.php';
     $return = array();
     if (isset($_FILES['upload'])) {
         if (!$_FILES['upload']['error']) {
             // Check for upload directory
             $uploadDir = $this->getUploadDir();
             $name = $this->checkFile($_FILES['upload']['name']);
             move_uploaded_file($_FILES['upload']['tmp_name'], "{$uploadDir}/{$name}");
             $data['parent_id'] = $_POST['parent_id'];
             $data['parent_table'] = $_POST['parent_table'];
             $data['filemime'] = $_FILES['upload']['type'];
             $data['filesize'] = $_FILES['upload']['size'];
             $data['filename'] = $name;
             $fileTable = new File();
             $data['id'] = $fileTable->insert($data);
             $data['creator_name'] = $this->view->identity->first_name . ' ' . $this->view->identity->last_name;
             $dataArray = FileUpload::modifyRows(array($data));
             $return = $dataArray[0];
             // Strange JSON decoding error when sending hyperlink
             $return['filename'] = strip_tags($return['filename']);
         } else {
             $return['error'] = 'Error uploading file. id: ' . $_FILES['upload']['error'];
         }
     }
     require_once 'Zend/Json.php';
     echo Zend_Json::encode($return);
     exit;
 }
 function testPersonHasBeenDeleted()
 {
     $this->unlinkOldTestFile();
     $person[] = array("firstname" => "Francesco R.", "surname" => "Di Caprio");
     $file = new File($this->testfile);
     $file->insert($person);
     $personToDelete = new Person("Francesco R.", "Di Caprio");
     $file->delete($personToDelete);
     $this->assertFalse($file->search($personToDelete));
 }
 function storeFile()
 {
     $file = new File();
     $file->filename = $this->filename;
     $file->url = File::url($this->filename);
     $filepath = File::path($this->filename);
     $file->size = filesize($filepath);
     $file->date = time();
     $file->mimetype = $this->mimetype;
     $file_id = $file->insert();
     if (!$file_id) {
         common_log_db_error($file, "INSERT", __FILE__);
         throw new ClientException(_('There was a database error while saving your file. Please try again.'));
     }
     return $file;
 }
Example #4
0
 /**
  * Save a new file record.
  *
  * @param array $redir_data lookup data eg from File_redirection::where()
  * @param string $given_url
  * @return File
  */
 function saveNew(array $redir_data, $given_url)
 {
     $x = new File();
     $x->url = $given_url;
     if (!empty($redir_data['protected'])) {
         $x->protected = $redir_data['protected'];
     }
     if (!empty($redir_data['title'])) {
         $x->title = $redir_data['title'];
     }
     if (!empty($redir_data['type'])) {
         $x->mimetype = $redir_data['type'];
     }
     if (!empty($redir_data['size'])) {
         $x->size = intval($redir_data['size']);
     }
     if (isset($redir_data['time']) && $redir_data['time'] > 0) {
         $x->date = intval($redir_data['time']);
     }
     $file_id = $x->insert();
     $x->saveOembed($redir_data, $given_url);
     return $x;
 }
Example #5
0
 /**
  * Store the full-length scrubbed HTML of a remote notice to an attachment
  * file on our server. We'll link to this at the end of the cropped version.
  *
  * @param string $title plaintext for HTML page's title
  * @param string $rendered HTML fragment for HTML page's body
  * @return File
  */
 function saveHTMLFile($title, $rendered)
 {
     $final = sprintf("<!DOCTYPE html>\n" . '<html><head>' . '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' . '<title>%s</title>' . '</head>' . '<body>%s</body></html>', htmlspecialchars($title), $rendered);
     $filename = File::filename($this->localProfile(), 'ostatus', 'text/html');
     $filepath = File::path($filename);
     $fileurl = File::url($filename);
     file_put_contents($filepath, $final);
     $file = new File();
     $file->filename = $filename;
     $file->urlhash = File::hashurl($fileurl);
     $file->url = $fileurl;
     $file->size = filesize($filepath);
     $file->date = time();
     $file->mimetype = 'text/html';
     $file_id = $file->insert();
     if ($file_id === false) {
         common_log_db_error($file, "INSERT", __FILE__);
         // TRANS: Server exception.
         throw new ServerException(_m('Could not store HTML content of long post as file.'));
     }
     return $file;
 }
Example #6
0
 /**
  * Save a new file record.
  *
  * @param array $redir_data lookup data eg from File_redirection::where()
  * @param string $given_url
  * @return File
  */
 function saveNew(array $redir_data, $given_url)
 {
     // I don't know why we have to keep doing this but I'm adding this last check to avoid
     // uniqueness bugs.
     $x = File::staticGet('url', $given_url);
     if (empty($x)) {
         $x = new File();
         $x->url = $given_url;
         if (!empty($redir_data['protected'])) {
             $x->protected = $redir_data['protected'];
         }
         if (!empty($redir_data['title'])) {
             $x->title = $redir_data['title'];
         }
         if (!empty($redir_data['type'])) {
             $x->mimetype = $redir_data['type'];
         }
         if (!empty($redir_data['size'])) {
             $x->size = intval($redir_data['size']);
         }
         if (isset($redir_data['time']) && $redir_data['time'] > 0) {
             $x->date = intval($redir_data['time']);
         }
         $file_id = $x->insert();
     }
     $x->saveOembed($redir_data, $given_url);
     return $x;
 }
 function storeFile()
 {
     $file = new File();
     $file->url = File::url($this->filename);
     $file->filename = $this->filename;
     $filepath = File::path($file->filename);
     $file->date = time();
     $file->mimetype = $this->mimetype;
     if ($this->mimetype == 'text/url') {
         $file->link = $this->link;
         $file->size = 0;
     } else {
         $file->link = null;
         $file->size = filesize($filepath);
     }
     $file_id = $file->insert();
     if (!$file_id) {
         common_log_db_error($file, "INSERT", __FILE__);
         // TRANS: Client exception thrown when a database error was thrown during a file upload operation.
         throw new ClientException(_('There was a database error while saving your file. Please try again.'));
     }
     return $file;
 }
require '../classes/Person.php';
require '../classes/File.php';
$act = filter_input(INPUT_GET, "act", FILTER_SANITIZE_STRING);
$json = array();
try {
    switch ($act) {
        case "getAllRecords":
            $file = new File("data.txt");
            $json["result"] = true;
            $json["records"] = $file->getAllRecords();
            break;
        case "insert":
            $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
            $people = $_POST["people"];
            $file = new File("data.txt");
            $json["result"] = $file->insert($people) !== false ? true : false;
            if (!$json["result"]) {
                $json["error"] = "Controller was unable to insert data.";
            }
            break;
        case "update":
            $oldFirstName = filter_input(INPUT_POST, "oldFirstName", FILTER_SANITIZE_STRING);
            $oldSurName = filter_input(INPUT_POST, "oldSurName", FILTER_SANITIZE_STRING);
            $newFirstName = filter_input(INPUT_POST, "newFirstName", FILTER_SANITIZE_STRING);
            $newSurName = filter_input(INPUT_POST, "newSurName", FILTER_SANITIZE_STRING);
            $personToUpdate = new Person($oldFirstName, $oldSurName);
            $newPerson = new Person($newFirstName, $newSurName);
            $file = new File("data.txt");
            $json["result"] = $file->update($personToUpdate, $newPerson) !== false ? true : false;
            if (!$json["result"]) {
                $json["error"] = "Controller was unable to update {$oldFirstName} {$newFirstName}. Maybe it has been deleted.";
Example #9
0
 function saveNew($redir_data, $given_url)
 {
     $x = new File();
     $x->url = $given_url;
     if (!empty($redir_data['protected'])) {
         $x->protected = $redir_data['protected'];
     }
     if (!empty($redir_data['title'])) {
         $x->title = $redir_data['title'];
     }
     if (!empty($redir_data['type'])) {
         $x->mimetype = $redir_data['type'];
     }
     if (!empty($redir_data['size'])) {
         $x->size = intval($redir_data['size']);
     }
     if (isset($redir_data['time']) && $redir_data['time'] > 0) {
         $x->date = intval($redir_data['time']);
     }
     $file_id = $x->insert();
     if (isset($redir_data['type']) && 'text/html' === substr($redir_data['type'], 0, 9) && ($oembed_data = File_oembed::_getOembed($given_url)) && isset($oembed_data['json'])) {
         File_oembed::saveNew($oembed_data['json'], $file_id);
     }
     return $x;
 }
Example #10
0
function doUpload()
{
    global $sage_data_dir;
    $filename = "";
    //if ((!isset($_REQUEST["DateiName"])) || (@$_REQUEST["DateiName"] == "")) {
    if (@$_REQUEST["DateiName"] != "") {
        $filename = $_REQUEST["DateiName"];
    } else {
        $filename = $_FILES["userfile"]["name"];
    }
    /*
        $filename = quotemeta($filename);
    
        if (strstr($filename, "/") || strstr($filename, "\\")) {
            fehlerausgabe("Kann $newname nicht anlegen: Ung&uuml;ltiger Name");
            return false;
        }
    */
    //  Verzeichniseintrag holen
    $path = new Path();
    if (!$path->selectByName($_SESSION["path"])) {
        fehlerausgabe("Kann nicht hochladen: Verzeichnis existiert nicht");
        return false;
    }
    // ACL für das Verzeichnis holen
    $acl = $_SESSION["user"]->getACLByPath($path->pathname);
    if ($acl->write_path != "1") {
        fehlerausgabe("Kann nicht hochladen: Zugriff verweigert");
        return false;
    }
    $file = new File();
    if ($file->selectByPathIDAndName($path->path_id, $filename)) {
        fehlerausgabe("Kann nicht hochladen: Datei existiert schon");
        return false;
    }
    $file->path_id = $path->path_id;
    $file->loginname = $_SESSION["user"]->loginname;
    $file->filename = $filename;
    $file->description = @$_REQUEST["Beschreibung"];
    $file->insert_at = "NOW()";
    $file->modified_at = "NOW()";
    if ($file->insert()) {
        move_uploaded_file($_FILES["userfile"]["tmp_name"], $sage_data_dir . $path->pathname . "/" . $filename);
        redirectTo($_SERVER["PHP_SELF"] . "?cmd=ls");
    } else {
        fehlerausgabe("Kann nicht hochladen: Einf&uumlgen in Datenbank fehlgeschlagen");
        return false;
    }
}
Example #11
0
 /**
  * 
  * @param array $file
  * @return int
  * @throws Exception
  */
 public static function insert($file)
 {
     parent::insert($file);
 }
Example #12
0
 protected function storeFile()
 {
     $filepath = File::path($this->filename);
     if (!empty($this->filename) && $this->filehash === null) {
         // Calculate if we have an older upload method somewhere (Qvitter) that
         // doesn't do this before calling new MediaFile on its local files...
         $this->filehash = hash_file(File::FILEHASH_ALG, $filepath);
         if ($this->filehash === false) {
             throw new ServerException('Could not read file for hashing');
         }
     }
     try {
         $file = File::getByHash($this->filehash);
         // We're done here. Yes. Already. We assume sha256 won't collide on us anytime soon.
         return $file;
     } catch (NoResultException $e) {
         // Well, let's just continue below.
     }
     $fileurl = File::url($this->filename);
     $file = new File();
     $file->filename = $this->filename;
     $file->urlhash = File::hashurl($fileurl);
     $file->url = $fileurl;
     $file->filehash = $this->filehash;
     $file->size = filesize($filepath);
     if ($file->size === false) {
         throw new ServerException('Could not read file to get its size');
     }
     $file->date = time();
     $file->mimetype = $this->mimetype;
     $file_id = $file->insert();
     if ($file_id === false) {
         common_log_db_error($file, "INSERT", __FILE__);
         // TRANS: Client exception thrown when a database error was thrown during a file upload operation.
         throw new ClientException(_('There was a database error while saving your file. Please try again.'));
     }
     // Set file geometrical properties if available
     try {
         $image = ImageFile::fromFileObject($file);
         $orig = clone $file;
         $file->width = $image->width;
         $file->height = $image->height;
         $file->update($orig);
         // We have to cleanup after ImageFile, since it
         // may have generated a temporary file from a
         // video support plugin or something.
         // FIXME: Do this more automagically.
         if ($image->getPath() != $file->getPath()) {
             $image->unlink();
         }
     } catch (ServerException $e) {
         // We just couldn't make out an image from the file. This
         // does not have to be UnsupportedMediaException, as we can
         // also get ServerException from files not existing etc.
     }
     return $file;
 }
Example #13
0
 /**
  * Save a new file record.
  *
  * @param array $redir_data lookup data eg from File_redirection::where()
  * @param string $given_url
  * @return File
  */
 public static function saveNew(array $redir_data, $given_url)
 {
     // I don't know why we have to keep doing this but I'm adding this last check to avoid
     // uniqueness bugs.
     $file = File::getKV('urlhash', self::hashurl($given_url));
     if (!$file instanceof File) {
         $file = new File();
         $file->urlhash = self::hashurl($given_url);
         $file->url = $given_url;
         if (!empty($redir_data['protected'])) {
             $file->protected = $redir_data['protected'];
         }
         if (!empty($redir_data['title'])) {
             $file->title = $redir_data['title'];
         }
         if (!empty($redir_data['type'])) {
             $file->mimetype = $redir_data['type'];
         }
         if (!empty($redir_data['size'])) {
             $file->size = intval($redir_data['size']);
         }
         if (isset($redir_data['time']) && $redir_data['time'] > 0) {
             $file->date = intval($redir_data['time']);
         }
         $file_id = $file->insert();
     }
     Event::handle('EndFileSaveNew', array($file, $redir_data, $given_url));
     assert($file instanceof File);
     return $file;
 }
Example #14
0
function newFile()
{
    $results = array();
    $results['pageTitle'] = "Carica un nuovo file";
    $results['formAction'] = "newFile";
    if (isset($_POST['btn-upload'])) {
        $file = new File();
        $file->storeFormValues($_POST);
        $file->insert();
        header("Location: admin.php?action=listFiles&status=changesSaved");
    } elseif (isset($_POST['cancel'])) {
        // User has cancelled their edits: return to the article list
        header("Location: admin.php");
    } else {
        // User has not posted the article edit form yet: display the form
        $results['file'] = new file();
        require TEMPLATE_PATH . "/admin/editFile.php";
    }
}
Example #15
0
 /**
  * Обработка создания превью картинки, сохранение в той же директории, что и оригинал с
  * постфиксом $postfix и регистрации превью, если она до этого не существовала
  * @param integer $w Ширина превью, если ноль, то ширина растягивается пропорционально высоте.
  * @param integer $h Высота превью, если ноль, то высота растягивается пропорционально широте.
  * @param string cropType - если не пустое, то картинка не растягивается, а вырезается под нужный размер. В этом случае нулей в ширине и высоте быть не может.
  * Возможные варианты: top|left(обрезается по верху, а если она растянута по ширине - то по центру)|right
  * @param string $postfix Постфикс, добавляется к имени файла
  * @param integer $quality Качество, в процентах
  * @param $resize Нужно ли масштабировать
  * @return File Превью
  */
 public function getPreview($w, $h, $postfix = '_p', $cropType = null, $quality = 80, $resize = false)
 {
     //Если не изображение
     if (!$this->getIsImage()) {
         return null;
     }
     if (!is_numeric($quality)) {
         $quality = 80;
     }
     //if ($f->getStatusProcess() == 1) return null;
     $root = Yii::getPathOfAlias('webroot') . DIRECTORY_SEPARATOR;
     $fp = $this->file_path;
     $fotobig = $root . $fp;
     if (empty($fp) || !file_exists($fotobig)) {
         return null;
     }
     // если размеры меньше, то не увеличиваем
     $img = new ImageUtils();
     $a = $img->info($fotobig);
     if ($w > 0 && $a['width'] <= $w && empty($cropType)) {
         $w = 0;
     }
     if ($h > 0 && $a['height'] <= $h && empty($cropType)) {
         $h = 0;
     }
     $previewAfter = HFile::addPostfix($fotobig, $postfix);
     $need2register = !file_exists($previewAfter);
     if ($w == 0) {
         $w = null;
     }
     if ($h == 0) {
         $h = null;
     }
     $img = new ImageUtils();
     // нужно ли проверять размер превью
     $needResize = false;
     if (file_exists($previewAfter)) {
         if ($resize) {
             $prevInfo = $img->info($previewAfter);
             $rh = $h;
             $rw = $w;
             //Вписывает изображение в прямоугольник $w x $h
             if ($resize === 'auto') {
                 if ($w > 0 && $h > 0) {
                     $kw = $w / $a['width'];
                     $kh = $h / $a['height'];
                     $rh = round($kw * $a['height']);
                     $rw = round($kw * $a['width']);
                     if ($rh > $h) {
                         $rh = round($kh * $a['height']);
                         $rw = round($kh * $a['width']);
                         $w = null;
                     } else {
                         $h = null;
                     }
                 }
             }
             $needResize = $rw != null && $prevInfo['width'] != $rw || $rh != null && $prevInfo['height'] != $rh;
         }
     }
     // Создание превью
     if (!file_exists($previewAfter) || $needResize) {
         // 0-0
         if ($h == null && $w == null) {
             return $this;
         } else {
             //if (DA_CONTROL_PROCESS_FILE) $f->updateStatusProcess(1);
             if (!$img->open($fotobig)) {
                 return null;
             }
             // 1-1
             if (!empty($cropType)) {
                 $img->crop($w, $h, true, $cropType);
                 // 1-0
             } else {
                 if ($h == null) {
                     $k = $w / $img->width;
                     $h = round($img->height * $k);
                     $img->resize($w, $h);
                     // 0-1
                 } else {
                     if ($w == null) {
                         $k = $h / $img->height;
                         $w = round($img->width * $k);
                         $img->resize($w, $h);
                         // 1-1
                     } else {
                         $img->crop($w, $h, true, 'center');
                     }
                 }
             }
             $img->save($previewAfter, $quality);
             //if (DA_CONTROL_PROCESS_FILE) $f->updateStatusProcess(0);
         }
     }
     //if ($object == null) $object = $f->getIdObjectOwner();
     //if ($id == null) $id = $f->getIdInstanceOwner();
     $previewFile = new File();
     $previewFile->id_object = $this->id_object;
     $previewFile->id_instance = $this->id_instance;
     $previewFile->id_file_type = self::FILE_IMAGE;
     $previewFile->id_tmp = $this->id_tmp;
     $previewFile->id_parameter = $this->id_parameter;
     $previewFile->id_property = $this->id_property;
     $previewFile->file_path = mb_substr($previewAfter, mb_strlen($root));
     // регистрация
     if ($this->id_object != null && $previewAfter != null && $need2register && file_exists($previewAfter)) {
         $previewFile->id_parent_file = $this->id_file;
         $previewFile->insert();
         chmod($previewAfter, 0777);
     }
     return $previewFile;
 }