Changeset 10287

Show
Ignore:
Timestamp:
01/21/09 00:01:29 (1 year ago)
Author:
maki
Message:

#3398: fixed message files can add over 3

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • OpenPNE3/plugins/opMessagePlugin/trunk/lib/form/MessageFileForm.class.php

    r10013 r10287  
    1919class MessageFileForm extends BaseMessageFileForm 
    2020{ 
    21   public function configure() 
    22   { 
    23     $this->setWidgets(array( 
    24       'image1' => new sfWidgetFormInputFile(), 
    25       'image2' => new sfWidgetFormInputFile(), 
    26       'image3' => new sfWidgetFormInputFile(), 
    27     )); 
    28     $this->setValidators(array( 
    29       'image1' => new opValidatorImageFile(array('required' => false)), 
    30       'image2' => new opValidatorImageFile(array('required' => false)), 
    31       'image3' => new opValidatorImageFile(array('required' => false)), 
    32     )); 
    33   } 
    3421} 
  • OpenPNE3/plugins/opMessagePlugin/trunk/lib/form/SendMessageDataForm.class.php

    r10033 r10287  
    2020  public function configure() 
    2121  { 
    22     unset($this['created_at'], $this['updated_at']); 
     22    unset($this['created_at'], $this['updated_at'], $this['has_files']); 
    2323    unset($this->widgetSchema['member_id'], 
    2424          $this->widgetSchema['is_deleted'], 
     
    3333    $this->validatorSchema['body']->setOption('required', true); 
    3434    $this->widgetSchema->setNameFormat('message[%s]'); 
    35     $this->mergeForm(new MessageFileForm()); 
     35    if (sfConfig::get('app_message_is_upload_images', true)) 
     36    { 
     37      if (!$this->isNew()) { 
     38        sfContext::getInstance()->getConfiguration()->loadHelpers('Partial'); 
     39        $images = $this->getObject()->getMessageFiles(); 
     40      } 
     41 
     42      $options = array( 
     43        'file_src'     => '', 
     44        'is_image'     => true, 
     45        'with_delete'  => true, 
     46      ); 
     47 
     48      $max = (int)sfConfig::get('app_message_max_image_file_num', 3); 
     49      for ($i = 0; $i < $max; $i++) { 
     50        if (!$this->isNew() && !empty($images[$i])) { 
     51          $image = $images[$i]; 
     52          $options['edit_mode'] = true; 
     53          $options['template'] = get_partial('message/formEditImage', array('image' => $image)); 
     54          $this->setValidator('image'.($i+1).'_delete', new sfValidatorBoolean(array('required' => false))); 
     55        } else { 
     56          $options['edit_mode'] = false; 
     57        } 
     58        $key = 'image'.($i+1); 
     59        $this->setWidget($key, new sfWidgetFormInputFileEditable($options)); 
     60        $this->setValidator($key, new opValidatorImageFile(array('required' => false))); 
     61      } 
     62    } 
    3663  } 
    3764   
     
    6087    $send_member_id = $this->getValue('send_member_id'); 
    6188    $send = MessageSendListPeer::getMessageByReferences($send_member_id, $message->getId()); 
    62     if (!$send) 
    63     { 
     89    if (!$send) { 
    6490      $send = new MessageSendList(); 
    6591      $send->setSendMessageData($message); 
     
    7096  public function saveImageFiles(SendMessageData $message) 
    7197  { 
    72     $imageKeys = array('image1', 'image2', 'image3'); 
    73     foreach ($imageKeys as $imageKey) 
    74     { 
    75       if ($this->getValue($imageKey)) 
    76       { 
    77         $file = new File(); 
    78         $file->setFromValidatedFile($this->getValue($imageKey)); 
    79         $file->setName('ms_'.$message->getId().'_'.$file->getName()); 
     98    if (!$this->isNew()) { 
     99      $images = $this->getObject()->getMessageFiles(); 
     100    } 
    80101 
    81         $messageFile = new MessageFile(); 
    82         $messageFile->setSendMessageData($message); 
    83         $messageFile->setFile($file); 
    84         $messageFile->save(); 
     102    if (sfConfig::get('app_message_is_upload_images', true)) { 
     103      $max = (int)sfConfig::get('app_message_max_image_file_num', 3); 
     104      for ($i = 0; $i < $max; $i++) { 
     105        if (!$this->isNew() && !empty($images[$i])) { 
     106          if ($this->getValue('image'.($i+1).'_delete')) { 
     107            $images[$i]->delete(); 
     108          } 
     109        } 
     110        $key = 'image'.($i+1); 
     111        if ($this->getValue($key)) { 
     112          if (!empty($images[$i]) && !$images[$i]->isDeleted()) { 
     113            $images[$i]->delete(); 
     114          } 
     115 
     116          $file = new File(); 
     117          $file->setFromValidatedFile($this->getValue($key)); 
     118          $file->setName('ms_'.$message->getId().'_'.$file->getName()); 
     119 
     120          $messageFile = new MessageFile(); 
     121          $messageFile->setSendMessageData($message); 
     122          $messageFile->setFile($file); 
     123          $messageFile->save(); 
     124        } 
    85125      } 
    86126    } 
  • OpenPNE3/plugins/opMessagePlugin/trunk/lib/model/MessageFile.php

    r10013 r10287  
    1111class MessageFile extends BaseMessageFile 
    1212{ 
     13  public function delete(PropelPDO $con = null) 
     14  { 
     15    parent::delete($con); 
     16    $this->getFile()->delete(); 
     17  } 
    1318} 
  • OpenPNE3/plugins/opMessagePlugin/trunk/lib/model/SendMessageData.php

    r10033 r10287  
    7575  } 
    7676   
     77  /** 
     78   * 添付ファイルを取得する(idの昇順) 
     79   * @return array 
     80   */ 
     81  public function getMessageFiles($criteria = null, PropelPDO $con = null) 
     82  { 
     83    if (is_null($criteria)) 
     84    { 
     85      $criteria = new Criteria(); 
     86      $criteria->addAscendingOrderByColumn(MessageFilePeer::ID); 
     87    } 
     88    $files = parent::getMessageFiles($criteria, $con); 
     89    return $files; 
     90  } 
    7791}