/**
  * Save file attributes from File
  * @param File $file
  * @param boolean $update
  */
 private function setAutoFileAttributes($file, $update = false)
 {
     // We download the file first in /tmp/ folder
     if (!file_exists(ReadFile::TEMP_FOLDER . $file->name)) {
         ReadFile::downloadRemoteFile($file->location, $file->name);
     }
     // from update page, we delete all auto attributes and make them again
     if ($update) {
         $criteria = new CDbCriteria();
         $criteria->addCondition('file_id = ' . $file->id);
         $fileAttributes = FileAttributes::model()->findAll($criteria);
         foreach ($fileAttributes as $fileAttribute) {
             if (strpos(Attribute::AUTO_ATTRIBUTE, $fileAttribute->attribute->structured_comment_name)) {
                 $fileAttribute->delete();
             }
         }
     }
     $fileAttribute = new FileAttributes();
     $fileAttribute->file_id = $file->id;
     /*$name = strpos($file->name, '.') ? explode('.', $file->name) : $file->name;
       $name = is_array($name) ? $name[0] : $name;*/
     $extension = str_replace('.', '', $file->extension);
     switch ($extension) {
         case 'fasta':
         case 'fa':
         case 'fastq':
         case 'seq':
         case 'bam':
         case 'sam':
         case 'cram':
             // Launche the python script to get the result
             list($aminoAcids, $nucleotides) = ReadFile::readPythonFile($file->name);
             // Number of Amino Acids
             $numberAminoAcids = clone $fileAttribute;
             $attribute = Attribute::model()->findByAttributes(array('structured_comment_name' => 'num_amino_acids'));
             $numberAminoAcids->attribute_id = $attribute->id;
             $numberAminoAcids->value = $aminoAcids;
             $numberAminoAcids->save();
             // Number of nucleotides
             $numberNucleotides = clone $fileAttribute;
             $attribute = Attribute::model()->findByAttributes(array('structured_comment_name' => 'num_nucleotides'));
             $numberNucleotides->value = $nucleotides;
             $numberNucleotides->attribute_id = $attribute->id;
             $numberNucleotides->save();
             break;
         case 'txt':
         case 'text':
         case 'doc':
         case 'docx':
         case 'rtf':
         case 'odt':
         case 'wpd':
         case 'lwd':
         case 'readme':
         case 'README':
         case 'pdf':
         case '':
             $result = null;
             if (in_array($extension, array('txt', 'text', 'readme', 'README', '', 'wpd', 'lwd'))) {
                 $result = ReadFile::readTextFile($file->name);
             }
             if (in_array($extension, array('docx', 'odt'))) {
                 $result = ReadFile::readDocxOdtFile($file->name);
             }
             if ($extension == 'doc') {
                 $result = ReadFile::readDocFile($file->name);
             }
             if ($extension == 'rtf') {
                 $result = ReadFile::readRtfFile($file->name);
             }
             if ($extension == 'pdf') {
                 $result = ReadFile::readPdfFile($file->name);
             }
             $numberOfLines = $numberOfWords = 0;
             $numberOfWords = str_word_count($result);
             $numberOfLines = substr_count($result, "\n");
             // Number of words
             $numberWords = clone $fileAttribute;
             $attribute = Attribute::model()->findByAttributes(array('structured_comment_name' => 'num_words'));
             $numberWords->attribute_id = $attribute->id;
             $numberWords->value = $numberOfWords;
             $numberWords->save();
             // Number of lines
             $numberLines = clone $fileAttribute;
             $attribute = Attribute::model()->findByAttributes(array('structured_comment_name' => 'num_lines'));
             $numberLines->attribute_id = $attribute->id;
             $numberLines->value = $numberOfLines;
             $numberLines->save();
             break;
         case 'csv':
         case 'tsv':
         case 'xls':
         case 'xlsx':
         case 'tab':
         case 'sdc':
         case 'ods':
         case 'gff':
         case 'gff3':
         case 'snp':
         case 'vcf':
         case 'ipr':
             $rows = $columns = 0;
             if ($extension == 'xls') {
                 list($rows, $columns) = ReadFile::readXlsFile($file->name);
             }
             if ($extension == 'ods') {
                 list($rows, $columns) = ReadFile::readOdsFile($file->name);
             }
             if ($extension == 'xlsx') {
                 list($rows, $columns) = ReadFile::readXlsxFile($file->name);
             }
             if (in_array($extension, array('csv', 'tsv', 'vcf', 'gff'))) {
                 list($rows, $columns) = ReadFile::readTableFile($file->name, $extension);
             }
             // Number of rows
             $numberRows = clone $fileAttribute;
             $attribute = Attribute::model()->findByAttributes(array('structured_comment_name' => 'num_rows'));
             $numberRows->attribute_id = $attribute->id;
             $numberRows->value = $rows;
             $numberRows->save();
             // Number of columns
             $numberColumns = clone $fileAttribute;
             $attribute = Attribute::model()->findByAttributes(array('structured_comment_name' => 'num_columns'));
             $numberColumns->value = $columns;
             $numberColumns->attribute_id = $attribute->id;
             $numberColumns->save();
             break;
     }
 }
Beispiel #2
0
 if ($argument[0] == 'show_file') {
     show_file();
 } else {
     if ($argument[0] == "cls") {
         system("cls");
     } else {
         if ($argument[0] == "optab") {
             display_optab();
         } else {
             if ($argument[0] == 'check') {
                 ## determine the opcode table
                 if (empty($argument[1])) {
                     echo "Empty target_name\n";
                     continue;
                 }
                 $ReadFile = new ReadFile();
                 ## use my ReadFile class [ReadFile.php] to store the operand table into array and return it
                 ## seem the defaultDirectory never finish it..
                 ## let disable" absolution path " use in readFile
                 if (($OPTB = $ReadFile->readFile(FIGURE_PATH . $argument[1])) == false) {
                     echo "Error in source file..\n";
                 } else {
                     $path_parts = pathinfo($argument[1]);
                     $OUTPUT_LOG_PREFIX = date("Y-m-d-His") . "_" . $path_parts['filename'] . "." . $path_parts['extension'] . "_";
                     echo "\n";
                     ## ## convert operand table into operand table(with object code)
                     ## ## fix into respond column...
                     $OPTB_WOC = optb_to_optb_woc($OPTB);
                     if ($argument[2] == '') {
                         $argument[2] = 'SIC/XE';
                     }
define('DS', DIRECTORY_SEPARATOR);
//right directory separator in current file system
define('HOME', dirname(__FILE__));
//location of home directory = this is where write.php file is
//
//  include 2 files with required classes
//
require HOME . DS . "Classes" . DS . "GetFile.class.php";
require HOME . DS . "Classes" . DS . "ReadFile.class.php";
if (isset($argv[1]) && $argc == 2) {
    //
    //      object of GetFile class
    //
    $file = new GetFile($argv[1]);
    //check filetype of output file
    $file->checkFileType();
    //
    //      object of ReadFile class
    //
    $read = new ReadFile($argv[1]);
    //read file and write content on the screen
    $read->read();
} else {
    if ($argc > 2) {
        //if user enter 2 or more arguments
        die("Too much arguments!");
    } else {
        //if user not enter any arguments
        die("You don't enter file!");
    }
}
Beispiel #4
0
 /**
  * Before save file
  */
 public function setSizeValue()
 {
     // Save the size from file if not set by user
     if ($this->attributes['location'] && $this->attributes['name']) {
         $size = trim($this->attributes['size']);
         if (empty($size)) {
             if (!file_exists(ReadFile::TEMP_FOLDER . $this->attributes['name'])) {
                 ReadFile::downloadRemoteFile($this->attributes['location'], $this->attributes['name']);
             }
             if (empty($this->size)) {
                 $this->size = filesize(ReadFile::TEMP_FOLDER . $this->name);
             }
         }
     }
 }