Example #1
0
 /**
  * Saves or updates the scaffolded model.
  *
  * @param CakeRequest $request Request Object for scaffolding
  * @param string $action add or edit
  * @return mixed Success on save/update, add/edit form if data is empty or error if save or update fails
  * @throws NotFoundException
  */
 protected function _scaffoldSave(CakeRequest $request, $action = 'edit')
 {
     $formAction = 'edit';
     $success = __d('cake', 'updated');
     if ($action === 'add') {
         $formAction = 'add';
         $success = __d('cake', 'saved');
     }
     if ($this->controller->beforeScaffold($action)) {
         if ($action == 'edit') {
             if (isset($request->params['pass'][0])) {
                 $this->ScaffoldModel->id = $request['pass'][0];
             }
             if (!$this->ScaffoldModel->exists()) {
                 throw new NotFoundException(__d('cake', 'Invalid %s', Inflector::humanize($this->modelKey)));
             }
         }
         if (!empty($request->data)) {
             if ($action == 'create') {
                 $this->ScaffoldModel->create();
             }
             if ($this->ScaffoldModel->save($request->data)) {
                 if ($this->controller->afterScaffoldSave($action)) {
                     $message = __d('cake', 'The %1$s has been %2$s', Inflector::humanize($this->modelKey), $success);
                     return $this->_sendMessage($message);
                 } else {
                     return $this->controller->afterScaffoldSaveError($action);
                 }
             } else {
                 if ($this->_validSession) {
                     $this->controller->Session->setFlash(__d('cake', 'Please correct errors below.'));
                 }
             }
         }
         if (empty($request->data)) {
             if ($this->ScaffoldModel->id) {
                 $this->controller->data = $request->data = $this->ScaffoldModel->read();
             } else {
                 $this->controller->data = $request->data = $this->ScaffoldModel->create();
             }
         }
         foreach ($this->ScaffoldModel->belongsTo as $assocName => $assocData) {
             $varName = Inflector::variable(Inflector::pluralize(preg_replace('/(?:_id)$/', '', $assocData['foreignKey'])));
             $this->controller->set($varName, $this->ScaffoldModel->{$assocName}->find('list'));
         }
         foreach ($this->ScaffoldModel->hasAndBelongsToMany as $assocName => $assocData) {
             $varName = Inflector::variable(Inflector::pluralize($assocName));
             $this->controller->set($varName, $this->ScaffoldModel->{$assocName}->find('list'));
         }
         return $this->_scaffoldForm($formAction);
     } elseif ($this->controller->scaffoldError($action) === false) {
         return $this->_scaffoldError();
     }
 }
 /**
  * testToBeInheritedGuardmethods method
  *
  * @return void
  */
 public function testToBeInheritedGuardmethods()
 {
     $request = new CakeRequest('controller_posts/index');
     $Controller = new Controller($request, $this->getMock('CakeResponse'));
     $this->assertTrue($Controller->beforeScaffold(''));
     $this->assertTrue($Controller->afterScaffoldSave(''));
     $this->assertTrue($Controller->afterScaffoldSaveError(''));
     $this->assertFalse($Controller->scaffoldError(''));
 }
Example #3
0
 /**
  * Saves or updates the scaffolded model.
  *
  * @param CakeRequest $request Request Object for scaffolding
  * @param string $action add or edit
  * @return mixed Success on save/update, add/edit form if data is empty or error if save or update fails
  * @throws NotFoundException
  */
 protected function _scaffoldSave(CakeRequest $request, $action = 'edit')
 {
     $modelClass = $this->controller->modelClass;
     $dontSave = false;
     $formAction = 'edit';
     $success = __d('cake', 'editado');
     if ($action === 'add') {
         $formAction = 'add';
         $success = __d('cake', 'adicionado');
     }
     if ($this->controller->beforeScaffold($action)) {
         if ($action == 'edit') {
             if (isset($request->params['pass'][0])) {
                 $this->ScaffoldModel->id = $request['pass'][0];
             }
             if (!$this->ScaffoldModel->exists()) {
                 throw new NotFoundException(__d('cake', '%s inválido', Inflector::humanize($this->modelKey)));
             }
         }
         if (!empty($request->data)) {
             if ($action == 'create') {
                 $this->ScaffoldModel->create();
             }
             foreach ($request->data[$modelClass] as $fieldKey => $fieldVal) {
                 $toUrl = '';
                 if (subStr($fieldKey, 0, 12) == 'url_amigavel' && isset($this->controller->transformUrl) && is_array($this->controller->transformUrl)) {
                     foreach ($this->controller->transformUrl as $urlField => $urlKey) {
                         if ($fieldKey == $urlField) {
                             $toUrl = $request->data[$modelClass][$urlKey];
                         }
                     }
                     $url = $this->stringToSlug($toUrl);
                     $request->data[$modelClass][$fieldKey] = $url;
                 }
                 /*
                 if(subStr($fieldKey,0,12)=='url_amigavel') {
                 	$toUrl = '';
                 	$lang = subStr($fieldKey, 13);
                 	
                 	if(array_key_exists('titulo_'.$lang, $request->data[$modelClass])) {
                 		$toUrl = $request->data[$modelClass]['titulo_'.$lang];
                 	}
                 	
                 	if(array_key_exists('nome_'.$lang, $request->data[$modelClass])) {
                 		$toUrl = $request->data[$modelClass]['nome_'.$lang];
                 	}
                 	
                 	$url = $this->stringToSlug($toUrl);
                 	$request->data[$modelClass][$fieldKey] = $url;
                 }
                 */
             }
             foreach ($request->data[$modelClass] as $key => $val) {
                 if (is_Array($val) && array_Key_Exists('name', $val)) {
                     eval($this->getZoioConfig());
                     $dir = $zConfig[$modelClass][$key]['dir'];
                     $resize = array('w' => $zConfig[$modelClass][$key]['width'], 'h' => $zConfig[$modelClass][$key]['height'], 'force' => $zConfig[$modelClass][$key]['forceresize']);
                     $types = $zConfig[$modelClass][$key]['types'];
                     $fileName = $zConfig[$modelClass][$key]['filename'];
                     $createDir = $zConfig[$modelClass][$key]['createfolder'];
                     $createThumb = $zConfig[$modelClass][$key]['thumb'];
                     if ($action == 'edit') {
                         $force = $zConfig[$modelClass][$key]['forceupload'][1];
                     } else {
                         $force = $zConfig[$modelClass][$key]['forceupload'][0];
                     }
                     if ($createThumb['width'] == 0 && $createThumb['height'] == 0) {
                         $createThumb = false;
                     }
                     $actionAndId = array('action' => $action, 'id' => $request->data[$modelClass]['id']);
                     if ($resize['w'] == 0 && $resize['h'] == 0) {
                         $resize = false;
                     }
                     $upLoaded = $this->uploadFile($dir, $val, $types, $resize, $force, $fileName, $createDir, $actionAndId, '', $createThumb);
                     if ($upLoaded[0]) {
                         $dontSave = false;
                         if ($upLoaded[1] != '') {
                             $request->data[$modelClass][$key] = $upLoaded[1];
                             if ($createThumb) {
                                 $request->data[$modelClass][str_replace('file', 'th_hidden', $key)] = $upLoaded[2];
                             }
                         } else {
                             $registro = $this->{$modelClass}->find('all', array('conditions' => array($modelClass . '.id' => $this->data[$modelClass]['id'])));
                             if (count($registro) > 0) {
                                 foreach ($registro[0][$modelClass] as $regKey => $regVal) {
                                     if ($regKey == $key) {
                                         $request->data[$modelClass][$key] = $regVal;
                                     }
                                 }
                             } else {
                                 $request->data[$modelClass][$key] = '';
                             }
                         }
                     } else {
                         if ($upLoaded[1]) {
                             $this->controller->Session->setFlash($upLoaded[1]);
                         }
                         $dontSave = true;
                     }
                 }
             }
             if (array_key_exists('deleteimagens', $request->data[$modelClass]) && $request->data[$modelClass]['deleteimagens'] != '') {
                 $val = $request->data[$modelClass]['deleteimagens'];
                 $delete = explode(',', substr($val, 0, -1));
                 $registro = $this->{$modelClass}->find('all', array('conditions' => array($modelClass . '.id' => $this->data[$modelClass]['id'])));
                 foreach ($delete as $fieldKey) {
                     $fieldVal_th = $registro[0][$modelClass][$fieldKey];
                     $fieldVal = $registro[0][$modelClass][str_replace('_th_hidden', '_file', $fieldKey)];
                     $fieldFile = str_replace('_th_hidden', '_file', $fieldKey);
                     $request->data[$modelClass][$fieldKey] = '';
                     $request->data[$modelClass][$fieldFile] = '';
                     unlink($fieldVal_th);
                     unlink($fieldVal);
                 }
             }
             if (!$dontSave) {
                 if ($this->ScaffoldModel->save($request->data)) {
                     if ($this->controller->afterScaffoldSave($action)) {
                         $message = __d('cake', '%1$s foi %2$s', Inflector::humanize($this->modelKey), $success);
                         return $this->_sendMessage($message);
                     } else {
                         return $this->controller->afterScaffoldSaveError($action);
                     }
                 } else {
                     if ($this->_validSession) {
                         $this->controller->Session->setFlash(__d('cake', 'Por favor, corrija os campos abaixo.'));
                     }
                 }
             }
         }
         if (empty($request->data)) {
             if ($this->ScaffoldModel->id) {
                 $this->controller->data = $request->data = $this->ScaffoldModel->read();
             } else {
                 $this->controller->data = $request->data = $this->ScaffoldModel->create();
             }
         }
         foreach ($this->ScaffoldModel->belongsTo as $assocName => $assocData) {
             $varName = Inflector::variable(Inflector::pluralize(preg_replace('/(?:_id)$/', '', $assocData['foreignKey'])));
             $this->controller->set($varName, $this->ScaffoldModel->{$assocName}->find('list'));
         }
         foreach ($this->ScaffoldModel->hasAndBelongsToMany as $assocName => $assocData) {
             $varName = Inflector::variable(Inflector::pluralize($assocName));
             $this->controller->set($varName, $this->ScaffoldModel->{$assocName}->find('list'));
         }
         return $this->_scaffoldForm($formAction);
     } elseif ($this->controller->scaffoldError($action) === false) {
         return $this->_scaffoldError();
     }
 }