public function uploadImageAction() { $returnJson = array(); $form = new K_Form(); $uploadDir = WWW_PATH . '/upload'; if ($form->hasFiles()) { $files = $form->getFiles(); if ($files['file'] && (explode('/' . $files['file']["type"])[0] = 'image')) { preg_match('/^.*\\.(jpg|png|jpeg|gif|bmp)$/im', $elementData); $pathData = $form->moveUploadedFile('file', $uploadDir, md5(time() . rand()), true); $returnJson['filelink'] = '/upload/' . $pathData['filename']; } } $this->putJSON($returnJson); }
public function updateElementAction() { $this->disableRender = true; $values = array(); $treeTable = new K_Tree_Model(); $elementId = $this->getParam('id'); $node = K_tree::getNode($elementId); $typeModelName = 'Type_Model_' . ucfirst($node['tree_type']); $typeModel = new $typeModelName(); $query = new K_Db_Query(); $columns = $query->q('SHOW COLUMNS FROM `type_' . $node['tree_type'] . '`'); foreach ($columns as $c_key => $column) { $columns[$c_key] = $column->toArray(); foreach ($_POST as $p_key => $value) { if ('type_' . $node['tree_type'] . '_' . $p_key == $columns[$c_key]['Field']) { $values['type_' . $node['tree_type'] . '_' . $p_key] = $value; } elseif ($columns[$c_key]['Field'] == 'type_' . $node['tree_type'] . '_aaccess') { $values['type_' . $node['tree_type'] . '_aaccess'] = ''; } } } $form = new K_Form(); $uploadDir = WWW_PATH . '/upload'; $typeFiles = $form->getFiles(); $typesModel = new K_Tree_Types_Model(); $typeData = $typesModel->select('type_fields')->where('`type_name`="' . $node['tree_type'] . '"')->fetchRow(); $typeData = $typeData->toArray(); $typeData = unserialize($typeData['type_fields']); $typeData = json_decode($typeData['form_structure']); if ($form->hasFiles()) { $typeFiles = $form->getFiles(); } foreach ($typeData as $key => $value) { /* если необходимо добавлять текущее время к дате if($value->values->name == 'date'){ $dates = K_date::dateParse($_POST['date']); $values['type_' . $node['tree_type'] . '_date'] = date('Y-m-d',$dates['ts']) .' '.date('G:i:s',time()); } */ // var_dump($typeFiles); if ($value->type == 'file' || $value->type == 'multifile') { if ($value->type == 'multifile') { $currentTypeData = $typeModel->select()->where('`type_' . $node['tree_type'] . '_id`=' . (int) $node['tree_id'])->fetchRow(); $currentTypeData = $currentTypeData->toArray(); // массив файлов сохранённый в базе; if ($filesArray = unserialize($currentTypeData['type_' . $node['tree_type'] . '_' . $value->values->name])) { $i = 0; $fcount = count($filesArray); for ($i = 0; $i < $fcount; $i++) { $isDelete = false; if ($_POST[$value->values->name . '_delete_' . $i] || $typeFiles[$value->values->name . '_f_' . $i]) { $currentLastLoadedFile = $uploadDir . '/' . $filesArray[$i]['f']; if (is_file($currentLastLoadedFile)) { unlink($currentLastLoadedFile); } unset($filesArray[$i]); $isDelete = true; } if (!$isDelete && $_POST[$value->values->name . '_t_' . $i]) { $filesArray[$i]['t'] = $_POST[$value->values->name . '_t_' . $i]; } } } foreach ($typeFiles as $k => $v) { if (preg_match('/^' . $value->values->name . '_f_([0-9]*)$/s', $k, $m)) { if (is_dir($uploadDir)) { $pathData = $form->moveUploadedFile($k, $uploadDir, md5(time() . rand()), true); /* if ($value->values->filter) { $filters = explode('|', $value->values->filter); foreach ($filters as $filter) { $filter = explode(':', $filter); if ($filter[0] == 'image') { $pathData['path'] = '/images/'.$pathData['filename'].'&'.$filter[1]; } } }*/ } else { $this->putAjax('Директории для загрузки не существует "' . $k . '"!'); } if ($pathData) { $fileOne['f'] = $pathData['filename']; if (!empty($_POST[$value->values->name . '_t_' . $m[1]])) { $fileName = $_POST[$value->values->name . '_t_' . $m[1]]; } else { $fileName = $v['name']; } $fileOne['t'] = $fileName; $filesArray[] = $fileOne; } else { $this->putAjax('Не удалось загрузить файл "' . $k . '"!'); } } } //упорядочим массив $filesArrayOrdered = array(); foreach ($filesArray as $v) { if (isset($v)) { $filesArrayOrdered[] = $v; } } $values['type_' . $node['tree_type'] . '_' . $value->values->name] = count($filesArrayOrdered) ? serialize($filesArrayOrdered) : ''; } else { if ($_POST[$value->values->name . '_delete']) { $currentTypeData = $typeModel->select()->where('`type_' . $node['tree_type'] . '_id`=' . (int) $node['tree_id'])->fetchRow(); $currentTypeData = $currentTypeData->toArray(); $currentLastLoadedFile = $uploadDir . '/' . $currentTypeData['type_' . $node['tree_type'] . '_' . $value->values->name]; if (is_file($currentLastLoadedFile)) { unlink($currentLastLoadedFile); } $values['type_' . $node['tree_type'] . '_' . $value->values->name] = ''; } else { if ($form->hasFiles() && isset($typeFiles[$value->values->name])) { if (is_dir($uploadDir)) { $currentTypeData = $typeModel->select()->where('`type_' . $node['tree_type'] . '_id`=' . (int) $node['tree_id'])->fetchRow(); $currentTypeData = $currentTypeData->toArray(); $currentLastLoadedFile = $uploadDir . '/' . $currentTypeData['type_' . $node['tree_type'] . '_' . $value->values->name]; if (is_file($currentLastLoadedFile)) { unlink($currentLastLoadedFile); } $pathData = $form->moveUploadedFile($value->values->name, $uploadDir, md5(time() . rand()), true); /* if ($value->values->filter) { $filters = explode('|', $value->values->filter); foreach ($filters as $filter) { $filter = explode(':', $filter); if ($filter[0] == 'image') { $pathData['path'] = '/images/'.$pathData['filename'].'&'.$filter[1]; } } }*/ } else { $this->putAjax('Директории для загрузки не существует "' . $value->values->name . '"!'); } if ($pathData) { $values['type_' . $node['tree_type'] . '_' . $value->values->name] = $pathData['filename']; } else { $this->putAjax('Не удалось загрузить файл "' . $value->values->name . '"!'); } } else { if ($value->values->filter == 'required' && !isset($typeFiles[$value->values->name])) { $this->putAjax('Файл "' . $value->values->name . '" не был загружен!'); } else { if (!$values['type_' . $node['tree_type'] . '_' . $value->values->name]) { unset($values['type_' . $node['tree_type'] . '_' . $value->values->name]); } } } } } } } $typeModel->update($values, '`type_' . $node['tree_type'] . '_id`=' . (int) $elementId); echo 'Данные сохранены! <script type="text/javascript"> $(document).ready(function(){ setTimeout(function(){ loadTabs(' . (int) $elementId . '); }, 2000); }); </script> '; }
public function updateElementAction() { $this->disableRender = true; $values = array(); $treeTable = new K_Tree_Model(); $elementId = $this->getParam('id'); $node = K_tree::getNode($elementId); $typeModelName = 'Type_Model_' . ucfirst($node['tree_type']); $typeModel = new $typeModelName(); $query = new K_Db_Query(); $columns = $query->q('SHOW COLUMNS FROM `type_' . $node['tree_type'] . '`'); foreach ($columns as $c_key => $column) { $columns[$c_key] = $column->toArray(); foreach ($_POST as $p_key => $value) { if ('type_' . $node['tree_type'] . '_' . $p_key == $columns[$c_key]['Field']) { $values['type_' . $node['tree_type'] . '_' . $p_key] = $value; } elseif ($columns[$c_key]['Field'] == 'type_' . $node['tree_type'] . '_aaccess') { $values['type_' . $node['tree_type'] . '_aaccess'] = ''; } } } $form = new K_Form(); $uploadDir = WWW_PATH . '/upload'; $typeFiles = $form->getFiles(); $typesModel = new K_Tree_Types_Model(); $typeData = $typesModel->select('type_fields')->where('`type_name`="' . $node['tree_type'] . '"')->fetchRow(); $typeData = $typeData->toArray(); $typeData = unserialize($typeData['type_fields']); $typeData = json_decode($typeData['form_structure']); if ($form->hasFiles()) { $typeFiles = $form->getFiles(); } foreach ($typeData as $key => $value) { if ($value->type == 'file') { if ($_POST[$value->values->name . '_delete']) { $currentTypeData = $typeModel->select()->where('`type_' . $node['tree_type'] . '_id`=' . (int) $node['tree_id'])->fetchRow(); $currentTypeData = $currentTypeData->toArray(); $currentLastLoadedFile = $uploadDir . '/' . $currentTypeData['type_' . $node['tree_type'] . '_' . $value->values->name]; if (is_file($currentLastLoadedFile)) { unlink($currentLastLoadedFile); } $values['type_' . $node['tree_type'] . '_' . $value->values->name] = ''; } else { if ($form->hasFiles() && isset($typeFiles[$value->values->name])) { if (is_dir($uploadDir)) { $currentTypeData = $typeModel->select()->where('`type_' . $node['tree_type'] . '_id`=' . (int) $node['tree_id'])->fetchRow(); $currentTypeData = $currentTypeData->toArray(); $currentLastLoadedFile = $uploadDir . '/' . $currentTypeData['type_' . $node['tree_type'] . '_' . $value->values->name]; if (is_file($currentLastLoadedFile)) { unlink($currentLastLoadedFile); } $pathData = $form->moveUploadedFile($value->values->name, $uploadDir, md5(time() . rand()), true); /* if ($value->values->filter) { $filters = explode('|', $value->values->filter); foreach ($filters as $filter) { $filter = explode(':', $filter); if ($filter[0] == 'image') { $pathData['path'] = '/images/'.$pathData['filename'].'&'.$filter[1]; } } }*/ } else { $this->putAjax('Директории для загрузки не существует "' . $value->values->name . '"!'); } if ($pathData) { $values['type_' . $node['tree_type'] . '_' . $value->values->name] = $pathData['filename']; } else { $this->putAjax('Не удалось загрузить файл "' . $value->values->name . '"!'); } } elseif ($value->values->filter == 'required' && !isset($typeFiles[$value->values->name])) { $this->putAjax('Файл "' . $value->values->name . '" не был загружен!'); } else { if (!$values['type_' . $node['tree_type'] . '_' . $value->values->name]) { unset($values['type_' . $node['tree_type'] . '_' . $value->values->name]); } } } } } $typeModel->update($values, '`type_' . $node['tree_type'] . '_id`=' . (int) $elementId); echo 'Данные сохранены! <script type="text/javascript"> setTimeout(function(){ $("a.jstree-clicked").click(); } }); </script> '; }