public function save($con = null)
 {
     $jobId = $this->jobId;
     if (is_null($jobId)) {
         throw new sfException("Job ID is null! Set it with setJobId()", 1);
     }
     for ($i = 0; $i < 5; $i++) {
         $file = $this->getValue("file_" . $i);
         if (!is_null($file)) {
             $shaName = sha1($file->getOriginalName() . time());
             $extension = $file->getExtension($file->getOriginalExtension());
             $filePath = sfConfig::get('sf_upload_dir') . "/" . $shaName . "." . $extension;
             $file->save($filePath);
             $ja = new JobAttachment();
             $ja->setJobId($jobId);
             $ja->setUserId(sfContext::getInstance()->getUser()->getProfile()->getId());
             $ja->setFileName($shaName . "." . $extension);
             $ja->setOriginalFileName($file->getOriginalName());
             $ja->save();
             chmod($filePath, 0644);
         }
     }
 }
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      JobAttachment $value A JobAttachment object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(JobAttachment $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         // if key === null
         self::$instances[$key] = $obj;
     }
 }