Example #1
0
 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'));
         }
     }
 }
Example #3
0
 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'));
         }
     }
 }