function processUpload(&$form, $file_post = array(), $field_name, $file_extensions) { //check valid file if (!\GCore\Libs\Upload::valid($file_post)) { return false; } //check not empty file upload if (!\GCore\Libs\Upload::not_empty($file_post)) { return false; } //check errors if (!isset($file_post['tmp_name']) or !is_uploaded_file($file_post['tmp_name'])) { if (!empty($file_post['error']) and $file_post['error'] !== UPLOAD_ERR_OK) { $form->debug[$action_id][self::$title][] = 'PHP returned this error for file upload by : ' . $field_name . ', PHP error is: ' . $file_post['error']; $form->errors[$field_name] = $file_post['error']; } $this->events['fail'] = 1; return false; } else { $form->debug[$action_id][self::$title][] = 'Upload routine started for file upload by : ' . $field_name; } if ((bool) $this->config->get('safe_file_name', 1) === true) { $file_name = \GCore\Libs\File::makeSafe($file_post['name']); } else { $file_name = utf8_decode($file_post['name']); } $real_file_name = $file_name; $file_tmp_name = $file_post['tmp_name']; $file_info = pathinfo($file_name); //mask the file name if (strlen($this->config->get('forced_file_name', '')) > 0) { $file_name = str_replace('FILE_NAME', $file_name, $this->config->get('forced_file_name', '')); } else { $file_name = date('YmdHis') . '_' . $file_name; } //check the file size if ($file_tmp_name) { //check max size if ($file_post['error'] === UPLOAD_ERR_INI_SIZE) { $form->debug[$action_id][self::$title][] = 'File : ' . $field_name . ' size is over the max PHP configured limit.'; $form->errors[$field_name] = $this->config->get('max_error', 'Sorry, Your uploaded file size (' . $file_post["size"] / 1024 . ' KB) exceeds the allowed limit.'); $this->events['fail'] = 1; return false; } elseif ($file_post["size"] / 1024 > (int) $this->config->get('max_size', 100)) { $form->debug[$action_id][self::$title][] = 'File : ' . $field_name . ' size is over the max limit.'; $form->errors[$field_name] = $this->config->get('max_error', 'Sorry, Your uploaded file size (' . $file_post["size"] / 1024 . ' KB) exceeds the allowed limit.'); $this->events['fail'] = 1; return false; } elseif ($file_post["size"] / 1024 < (int) $this->config->get('min_size', 0)) { $form->debug[$action_id][self::$title][] = 'File : ' . $field_name . ' size is less than the minimum limit.'; $form->errors[$field_name] = $this->config->get('min_error', 'Sorry, Your uploaded file size (' . $file_post["size"] / 1024 . ' KB) is less than the minimum limit.'); $this->events['fail'] = 1; return false; } elseif (!in_array(strtolower($file_info['extension']), $file_extensions)) { $form->debug[$action_id][self::$title][] = 'File : ' . $field_name . ' extension is not allowed.'; $form->errors[$field_name] = $this->config->get('type_error', 'Sorry, Your uploaded file type is not allowed.'); $this->events['fail'] = 1; return false; } else { $uploaded_file = \GCore\Libs\Upload::save($file_tmp_name, $this->upload_path . $file_name); if ($uploaded_file) { $uploaded_file_data = array(); $uploaded_file_data = array('name' => $file_name, 'original_name' => $real_file_name, 'path' => $this->upload_path . $file_name, 'size' => $file_post["size"]); //Try to generate an auto file link $site_link = \GCore\C::get('GCORE_FRONT_URL'); if (substr($site_link, -1) == "/") { $site_link = substr_replace($site_link, '', -1); } $uploaded_file_data['link'] = str_replace(array(\GCore\C::get('GCORE_FRONT_PATH'), DS), array($site_link, "/"), $this->upload_path . $file_name); //$form->data[$field_name] = $file_name; $form->debug[$action_id][self::$title][] = $this->upload_path . $file_name . ' has been uploaded successfully.'; $this->events['success'] = 1; return $uploaded_file_data; } else { $form->debug[$action_id][self::$title][] = $this->upload_path . $file_name . ' could not be uploaded!!'; $this->events['fail'] = 1; return false; } } } }
function install_locale() { $session = \GCore\Libs\Base::getSession(); if (isset($_FILES['upload'])) { $upload = $_FILES['upload']; if (\GCore\Libs\Upload::valid($upload) and \GCore\Libs\Upload::not_empty($upload) and \GCore\Libs\Upload::check_type($upload, 'zip')) { $target = \GCore\C::get('GCORE_FRONT_PATH') . 'cache' . DS . rand() . $upload['name']; $result = \GCore\Libs\Upload::save($upload['tmp_name'], $target); if (empty($result)) { $session->setFlash('error', l_('CF_LOCALE_UPLOAD_ERROR')); $this->redirect(r_('index.php?ext=chronoforms&act=install_locale')); } //file upload, let's extract it $zip = new \ZipArchive(); $handler = $zip->open($target); if ($handler === true) { $extract_path = \GCore\C::ext_path('chronoforms', 'admin') . 'locales' . DS; $zip->extractTo($extract_path); $zip->close(); unlink($target); $session->setFlash('success', l_('CF_LOCALE_INSTALL_SUCCESS')); $this->redirect(r_('index.php?ext=chronoforms')); } else { $session->setFlash('error', l_('CF_LOCALE_EXTRACT_ERROR')); $this->redirect(r_('index.php?ext=chronoforms&act=install_locale')); } } else { $session->setFlash('error', l_('CF_LOCALE_FILE_ERROR')); $this->redirect(r_('index.php?ext=chronoforms&act=install_locale')); } } }
function restore() { $files = $_FILES; if (is_array($files) and !empty($files)) { $session = \GCore\Libs\Base::getSession(); if (!\GCore\Libs\Upload::valid($files['ccbackup'])) { $session->setFlash('error', l_('CONN_CONNECTIONS_RESTORE_ERROR')); return false; } if (!\GCore\Libs\Upload::not_empty($files['ccbackup'])) { $session->setFlash('error', l_('CONN_CONNECTIONS_RESTORE_ERROR')); return false; } if (!\GCore\Libs\Upload::check_type($files['ccbackup'], array('cc5bak'))) { $session->setFlash('error', l_('CONN_CONNECTIONS_RESTORE_ERROR')); return false; } $path = \GCore\C::get('GCORE_FRONT_PATH') . DS . 'cache'; $uploaded_file = \GCore\Libs\Upload::save($files['ccbackup']['tmp_name'], $path . DS . $files['ccbackup']['name']); if (!$uploaded_file) { $session->setFlash('error', l_('CONN_CONNECTIONS_RESTORE_ERROR')); } else { $data = file_get_contents($path . DS . $files['ccbackup']['name']); \GCore\Libs\File::delete($path . DS . $files['ccbackup']['name']); $connections = unserialize(base64_decode(trim($data))); if (!empty($connections)) { foreach ($connections as $connection) { if (isset($connection['Connection']['id'])) { $connection['Connection']['id'] = null; $connection['Connection']['published'] = 0; $this->Connection->save($connection); } } } $session->setFlash('success', l_('CONN_CONNECTIONS_RESTORED')); $this->redirect(r_('index.php?ext=chronoconnectivity')); } } }