MailContent::copy PHP Méthode

copy() public méthode

メールコンテンツデータをコピーする
public copy ( integer $id, integer $newParentId, string $newTitle, integer $newAuthorId, integer $newSiteId = null ) : mixed
$id integer ページID
$newParentId integer 新しい親コンテンツID
$newTitle string 新しいタイトル
$newAuthorId integer 新しいユーザーID
$newSiteId integer 新しいサイトID
Résultat mixed mailContent|false
    public function copy($id, $newParentId, $newTitle, $newAuthorId, $newSiteId = null)
    {
        $data = $this->find('first', ['conditions' => ['MailContent.id' => $id], 'recursive' => 0]);
        $url = $data['Content']['url'];
        $siteId = $data['Content']['site_id'];
        $name = $data['Content']['name'];
        unset($data['MailContent']['id']);
        unset($data['MailContent']['created']);
        unset($data['MailContent']['modified']);
        unset($data['Content']);
        $data['Content'] = ['name' => $name, 'parent_id' => $newParentId, 'title' => $newTitle, 'author_id' => $newAuthorId, 'site_id' => $newSiteId];
        if (!is_null($newSiteId) && $siteId != $newSiteId) {
            $data['Content']['site_id'] = $newSiteId;
            $data['Content']['parent_id'] = $this->Content->copyContentFolderPath($url, $newSiteId);
        }
        $this->getDataSource()->begin();
        if ($result = $this->save($data)) {
            $result['MailContent']['id'] = $this->id;
            $mailFields = $this->MailField->find('all', array('conditions' => array('MailField.mail_content_id' => $id), 'order' => 'MailField.sort', 'recursive' => -1));
            foreach ($mailFields as $mailField) {
                $mailField['MailField']['mail_content_id'] = $result['MailContent']['id'];
                $this->MailField->copy(null, $mailField, array('sortUpdateOff' => true));
            }
            App::uses('MailMessage', 'Mail.Model');
            $MailMessage = ClassRegistry::init('Mail.MailMessage');
            $MailMessage->setup($result['MailContent']['id']);
            $MailMessage->_sourceConfigured = true;
            // 設定しておかないと、下記の処理にて内部的にgetDataSouceが走る際にエラーとなってしまう。
            $MailMessage->construction($result['MailContent']['id']);
            $this->getDataSource()->commit();
            return $result;
        }
        $this->getDataSource()->rollback();
        return false;
    }