Esempio n. 1
0
 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;
     }
 }
Esempio n. 2
0
 /** 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;
 }
Esempio n. 3
0
 /** 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));
 }
Esempio n. 4
0
 /** 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;
 }
Esempio n. 5
0
 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));
 }