public function __set($name, $value) { if (getUser()->data->id != $this->data->owner && getUser()->data->access_level != 0) { return; } switch ($name) { case 'name': case 'mime': getDB()->query('setFile', array('id' => $this->fid, 'field' => $name, 'value' => $value)); $this->data->{$name} = $value; break; case 'list': getDB()->query('setFile', array('id' => $this->fid, 'field' => $name, 'value' => $value)); $this->data = getDB()->query('refreshData', array('pid' => $this->pid)); $this->data = $this->data->dataObj; break; case 'file': if (!is_file(SYS_TMP . $file)) { $this->throwError('$value isn`t a file', $value); } getRAR()->execute('moveFile', array('source' => SYS_TMP . $value, 'destination' => SYS_SHARE_PROJECTS . $this->fid)); break; default: return; } }
/** Eine neue Version der Dateien des Projekts wird erstellt oder die * Dateien auf eine andere Version gesetzt * * @param int $version der name der Version im format xxx.x.x * @param mixed $folder gibt es die Version noch nicht muss ein Pfad * für die Dateien dieser Version angegeben werden * @return bool true, false im Fehlerfall * @author Lorze Widmer */ public function setVersion($version, $folder = false) { //Berechtigungen werden überprüft if (!$this->editable) { return false; } //Überprüfen der Parameter if (preg_match('/^[0-9]+\\.[0-9]+\\.[0-9]+$/', $version)) { $this->throwError('$version isn`t a version number', $version); } //$versionfile ist der pfad zur Versions-Datei in der Form: $pid.rar-v$version $versionFile = SYS_SHARE_PROJECTS . $this->pid . '-v' . $version; //das aktuelle File wird in eine Versions-Datei umbenannt if (!rename(SYS_SHARE_PROJECTS . $this->pid . '.rar', SYS_SHARE_PROJECTS . $this->pid . '-v' . $this->data->version)) { $this->throwError('couldn`t rename file'); } //gibt es $versionfile nicht gibt es die Version nicht und es wird eine neue version erstellt if (!is_file($versionFile)) { //Ordner wird gepackt if (!is_dir(SYS_TMP . $folder)) { $this->throwError('$version isn`t currently present'); } getRAR()->execute('packProject', array('source' => SYS_TMP . $folder, 'destination' => $versionFile)); $this->versions[] = $version; } $this->data->version = $version; getDB()->query('setProject', array('id' => $this->pid, 'field' => 'version', 'value' => $version)); //die Versionsdatei wird in $pid.rar umbenannt if (!rename($versionFile, SYS_SHARE_PROJECTS . $this->pid . '.rar')) { $this->throwError('couldn`t rename file'); } return true; }
/** Erstellt ein neues File * * @param string $name Name des Projekts * @param integer $list Projektliste * @param string $file Dateiname des Files * @return bool false im Fehlerfall, sonst true * @author Lorze Widmer */ function addFile($name, $list, $file) { //überprüfen der Parameter $query = array(); if (!is_string($name)) { $this->throwError('$name isn`t a string', $name); } if (!is_file(SYS_TMP . $file)) { $this->throwError('$file isn`t a file', $file); } //input für das sql-Template wird zusammengesetzt $query['name'] = $name; $query['owner'] = intval(getUser()->id); $query['list'] = intval($list); $query['mime'] = mime_content_type($file); //template wird gefüllt und ausgeführt if (getDB()->query('addProject', $query)) { $this->throwError('MYSQLi hates you!'); } //daten aus SYS_TMP/$folder werden gepackt und nach SYS_SHARE_PROJECTS/$pid.rar verschoben return getRAR()->execute('moveFile', array('source' => SYS_TMP . $file, 'destination' => SYS_SHARE_PROJECTS . getDB()->insert_id)); }
/** Das ganze Projekt oder nur eine Datei wird zum Downlaod vorbereitet. * * @param string $mask Gibt an wenn nur ein File ausgepackt und zum * Download vorbereitet wird oder ob das ganze Projekt * vorbereitet wird. $mask muss der Filename + den ganzen * Pfad in der RAR-Datei sein. * @return array mit element pfad (Pfad zur gefragten datei) und name(Name der Datei) * @author Lorze Widmer */ public function prepareDownload() { $folder = uniqid() . '.rar'; $projects = getDB()->query('getProjectsList', array('list' => $this->data->id)); if ($projects === NULL) { return false; } //sonst wird die mit $mask angegebene Datei entpackt und der Pfad zurückgegeben $createFolder = array(); $packProject = array(); do { $createFolder[] = $projects->dataObj->name; if (is_file(SYS_SHARE_PROJECTS . $projects->dataObj->id . '.rar')) { $packProject[$projects->dataObj->name] = SYS_SHARE_PROJECTS . $projects->dataObj->id . '.rar'; } } while ($projects->next()); var_dump($createFolder); var_dump($packProject); if (!getRAR()->execute('packList', array('packProject' => $packProject, 'createFolder' => $createFolder, 'path' => SYS_TMP . $folder))) { $this->throwError('WinRAR failed to pack the list'); } return $folder; }
private function addPicture($file) { if (!is_file(SYS_TEMP_FOLDER . $file)) { $this->throwError('$file isn`t a file!'); } if ($this->length == 0) { $dir = opendir($this->folder); while ($img_name = readdir($dir)) { if (!strpos($img_name, '.thumb.') && @getimagesize($this->folder . $img_name)) { $this->length++; } } closedir($dir); } $extension = explode('.', $file); $extension = $extension[count($extension)]; $this->json = NULL; $this->length++; return getRAR()->execute('moveFile', array('source' => SYS_TEMP_FOLDER . $file, 'destination' => SYS_DIASHOW_FOLDER . $this->length . $extension)); }