public function index()
 {
     $user = System::getUser();
     $form = new Form('form-profile');
     $form->setAttribute('data-noajax', 'true');
     $form->binding = $user;
     $fieldset = new Fieldset(System::getLanguage()->_('General'));
     $firstname = new Text('firstname', System::getLanguage()->_('Firstname'));
     $firstname->binding = new Databinding('firstname');
     $lastname = new Text('lastname', System::getLanguage()->_('Lastname'));
     $lastname->binding = new Databinding('lastname');
     $email = new Text('email', System::getLanguage()->_('EMail'), true);
     $email->binding = new Databinding('email');
     $email->blacklist = $this->getListOfMailAdresses($user);
     $email->error_msg[4] = System::getLanguage()->_('ErrorMailAdressAlreadyExists');
     $language = new Radiobox('lang', System::getLanguage()->_('Language'), L10N::getLanguages());
     $language->binding = new Databinding('lang');
     $fieldset->addElements($firstname, $lastname, $email, $language);
     $form->addElements($fieldset);
     $fieldset = new Fieldset(System::getLanguage()->_('Password'));
     $password = new Password('password', System::getLanguage()->_('Password'));
     $password->minlength = PASSWORD_MIN_LENGTH;
     $password->binding = new Databinding('password');
     $password2 = new Password('password2', System::getLanguage()->_('ReenterPassword'));
     $fieldset->addElements($password, $password2);
     $form->addElements($fieldset);
     $fieldset = new Fieldset(System::getLanguage()->_('Settings'));
     $quota = new Text('quota', System::getLanguage()->_('Quota'));
     if ($user->quota > 0) {
         $quota->value = System::getLanguage()->_('QuotaAvailabe', Utils::formatBytes($user->getFreeSpace()), Utils::formatBytes($user->quota));
     } else {
         $quota->value = System::getLanguage()->_('Unlimited');
     }
     $quota->readonly = true;
     $fieldset->addElements($quota);
     $form->addElements($fieldset);
     if (Utils::getPOST('submit', false) !== false) {
         if (!empty($password->value) && $password->value != $password2->value) {
             $password2->error = System::getLanguage()->_('ErrorInvalidPasswords');
         } else {
             if ($form->validate()) {
                 $form->save();
                 System::getUser()->save();
                 System::getSession()->setData('successMsg', System::getLanguage()->_('ProfileUpdated'));
                 System::forwardToRoute(Router::getInstance()->build('ProfileController', 'index'));
                 exit;
             }
         }
     } else {
         $form->fill();
     }
     $form->setSubmit(new Button(System::getLanguage()->_('Save'), 'floppy-disk'));
     $smarty = new Template();
     $smarty->assign('title', System::getLanguage()->_('MyProfile'));
     $smarty->assign('heading', System::getLanguage()->_('MyProfile'));
     $smarty->assign('form', $form->__toString());
     $smarty->display('form.tpl');
 }
Example #2
0
 /**
  * Returns the default string representation of this form.
  *
  * @return string The form as '<form>...</form>'.
  * @see Formulaic\Form::__toString
  */
 public function __toString()
 {
     foreach ((array) $this as $field) {
         if ($field->getElement() instanceof File) {
             $this->attributes['enctype'] = 'multipart/form-data';
         }
     }
     $this->attributes['method'] = 'post';
     return parent::__toString();
 }
Example #3
0
 private function sendForm($ini, $subject = '')
 {
     $form = new Form();
     if ($form->ParseSettings($ini)) {
         $this->formData = $form->BuildFormFields($_POST);
         if (empty($this->formData['error'])) {
             /*				if (isset($_POST['to_email'])){
             					$form->setEmail($_POST['to_email']);	
             				}else{
             					$form->setEmail();	
             				}*/
             $form->setEmail(isset($_POST['to_email']) ? $_POST['to_email'] : '');
             $subject = isset($_POST['subject']) ? $_POST['subject'] : $subject;
             $msg = 'Contact request from ' . $_SERVER['HTTP_HOST'] . "\n\n" . 'Contact IP: ' . $_SERVER['REMOTE_ADDR'] . "\n" . $form->__toString();
             $form->SendMail($subject, $msg, isset($this->formData['fields']['name']) ? $this->formData['fields']['name'] : 'Anonymous', $this->formData['fields']['email']);
         }
     }
 }
Example #4
0
 private function sendForm($ini, $subject = null)
 {
     if (!substr_count($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])) {
         return false;
     }
     $form = new Form();
     if ($form->ParseSettings($ini)) {
         $this->formData = $form->BuildFormFields($_POST);
         if (empty($this->formData['error'])) {
             if (isset($_POST['emails'])) {
                 if ($mSettings = $form->getmSettings()) {
                     foreach ($mSettings as $key => $val) {
                         if (1 == substr_count($key, 'mail')) {
                             $form->delmSettings($key);
                         }
                     }
                 }
                 $form->setmSettings(array('emails' => $_POST['emails']));
             }
             $subject = isset($subject) ? $subject : 'Request';
             if (!empty($_POST['product']) && is_numeric($_POST['product'])) {
                 $products = new Products();
                 $product = $products->getProductById($_POST['product']);
                 $subject .= ' [' . $product['p_title'] . ']';
             } elseif (!empty($_POST['product']) && is_string($_POST['product'])) {
                 $subject .= ' [' . $_POST['product'] . ']';
                 $product = null;
             }
             $subject = isset($_POST['subject']) ? $_POST['subject'] : $subject;
             $msg = $subject . ' from ' . $_SERVER['HTTP_REFERER'] . "\n\n" . (isset($product) ? 'Product: ' . $product['p_title'] . "\n" : '') . $form->__toString();
             if (isset($this->formData['AttachFile'])) {
                 $filePath = $this->formData['AttachFile']['filepath'];
                 $fileName = $this->formData['AttachFile']['filename'];
             } else {
                 $filePath = '';
                 $fileName = '';
             }
             if (!empty($_POST['subscribe']) && !empty($_POST['email']) && !empty($_POST['product'])) {
                 $table_name = 'discount_subscribe';
                 $name = isset($_POST['name']) ? $_POST['name'] : '';
                 $q = sprintf("INSERT IGNORE INTO %s.%s (email, product_id, name, date) values('%s',%d, '%s', '%s')", VBox::get('ConstData')->getConst('langsDb'), $table_name, $_POST['email'], $_POST['product'], $name, date('Y-m-d'));
                 DB::executeAlter($q, 'reg');
             }
             if (!empty($_POST['notify']) && !empty($_POST['email']) && !empty($_POST['product'])) {
                 $table_name = 'notify_users';
                 $q = 'SELECT * FROM ' . VBox::get('ConstData')->getConst('langsDb') . '.' . $table_name . ' WHERE nu_product_id = ? AND nu_email = ? LIMIT 1';
                 if (!DB::executeQuery($q, 'selectNotifyUser', array($_POST['product'], trim($_POST['email'])))) {
                     $q = sprintf("INSERT IGNORE INTO %s.%s (nu_email, nu_product_id, nu_name, nu_date) values('%s',%d, '%s', '%s')", VBox::get('ConstData')->getConst('langsDb'), $table_name, trim($_POST['email']), $_POST['product'], $_POST['name'], date('Y-m-d h:i:s', time()));
                     DB::executeAlter($q, 'reg');
                 }
             }
             if (isset($_POST['mail_body'])) {
                 $mail_body = nl2br($_POST['mail_body']);
                 $reply_to = isset($_POST['reply_to']) ? $_POST['reply_to'] : '*****@*****.**';
                 include_once ENGINE_PATH . 'class/classEmailReporter.php';
                 $reporter = new EmailReporter();
                 $reporter->setBody($mail_body);
                 $reporter->send($this->formData['fields']['email'], array($reply_to => 'NetSpot'), $subject);
             }
             if (!empty($_POST['notify_template_stat']) && !empty($_POST['email']) && !empty($_POST['alias'])) {
                 $table_name = 'email_stat';
                 /* add information at stat table */
                 $q = sprintf("INSERT INTO %s.%s (es_email, es_product_id, es_date) values('%s','%s','%s')", VBox::get('ConstData')->getConst('langsDb'), $table_name, $_POST['email'], $_POST['alias'], date('Y-m-d h:i:s', time()));
                 DB::executeAlter($q, 'notify_template_stat');
                 if (!empty($_POST['template'])) {
                     $last_id = DB::getLastInsertId();
                     if ($last_id) {
                         include_once ENGINE_PATH . 'class/classEmailReporter.php';
                         $reporter = new EmailReporter();
                         $_subject = isset($_POST['templateSubject']) ? $_POST['templateSubject'] : 'Thank you for subscription';
                         $args = array();
                         $args['email'] = $_POST['email'];
                         $args['hash'] = hash_hmac('md5', $last_id . $_POST['email'], 'stat');
                         $args['id'] = $last_id;
                         $args['random'] = rand(0, 10000) . chr(rand(65, 90));
                         if (isset($_POST['args'])) {
                             $args = $_POST['args'];
                         }
                         $mail_body = $reporter->renderingTpl($_POST['template']);
                         $reporter->setBody($mail_body, $args);
                         $reply_to = isset($_POST['reply_to']) ? $_POST['reply_to'] : '*****@*****.**';
                         $reporter->send($this->formData['fields']['email'], array($reply_to => 'NetSpot Software'), $_subject);
                     }
                 }
             }
             if (!empty($_POST['mailchimp_u']) && !empty($_POST['mailchimp_id'])) {
                 $mailchimp_post_url = 'http://netspotapp.us12.list-manage.com/subscribe/post';
                 //netspotapp.us12.list-manage.com/subscribe/post?u=49afa3dbcd460871845fac4b8&amp;id=df296d03d7
                 $attributes = array('u' => $_POST['mailchimp_u'], 'id' => $_POST['mailchimp_id'], 'MERGE0' => $_POST['email'], 'MERGE1' => isset($_POST['name']) ? $_POST['name'] : '', 'MERGE2' => '');
                 $errno = $error = false;
                 if ($curl = curl_init()) {
                     curl_setopt($curl, CURLOPT_URL, $mailchimp_post_url);
                     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                     curl_setopt($curl, CURLOPT_POST, true);
                     curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($attributes));
                     $out = curl_exec($curl);
                     $info = curl_getinfo($curl);
                     $errno = curl_errno($curl);
                     $tickets_hasError = curl_error($curl);
                     curl_close($curl);
                     //					echo $out;
                     //					var_dump($info);
                     //					var_dump($errno);
                     //var_dump($tickets_hasError);
                 }
             }
             if (empty($_POST['not_send'])) {
                 $fromEmail = empty($this->formData['fields']['email']) ? '*****@*****.**' : $this->formData['fields']['email'];
                 $fromName = empty($this->formData['fields']['name']) ? $fromEmail : $this->formData['fields']['name'];
                 $form->SendMail($subject, $msg, $fromName, $fromName . ' <' . $fromEmail . '>', $filePath, $fileName);
             }
         }
     }
 }
 public function permissions()
 {
     try {
         $file = File::find('alias', $this->getParam('alias', ''));
     } catch (FileNotFoundException $e) {
         System::displayError(System::getLanguage()->_('ErrorFileNotFound'), '404 Not Found');
     }
     $form = new Form('form-permissions', '');
     $fieldset = new Fieldset(System::getLanguage()->_('PermissionSetting'));
     $permission = new Select('permission', System::getLanguage()->_('Permission'), FilePermissions::getAll());
     $permission->selected_value = $file->permission;
     $password = new Password('password', System::getLanguage()->_('Password'));
     $fieldset->addElements($permission, $password);
     $form->addElements($fieldset);
     if (Utils::getPOST('submit', false) !== false) {
         if ($form->validate()) {
             if ($permission->selected_value == 2 && empty($password->value)) {
                 $password->error = System::getLanguage()->_('InvalidPassword');
             } else {
                 $file->permission->setPermission($permission->selected_value, $password->value);
                 System::forwardToRoute(Router::getInstance()->build('DownloadController', 'download', $file));
                 exit;
             }
         }
     }
     $form->addButton(new Button(System::getLanguage()->_('Cancel'), 'icon icon-cancel', Router::getInstance()->build('DownloadController', 'download', $file)));
     $smarty = new Template();
     $smarty->assign('title', System::getLanguage()->_('PermissionSetting'));
     $smarty->assign('form', $form->__toString());
     $smarty->display('form.tpl');
 }
 public function upload()
 {
     $form = new Form('form-upload', Router::getInstance()->build('UploadController', 'upload'));
     $form->setAttribute('data-noajax', 'true');
     $form->setEnctype();
     $fieldset = new Fieldset(System::getLanguage()->_('General'));
     $folderInput = new Select('folder', System::getLanguage()->_('ChooseFolder'), Folder::getAll());
     $folderInput->selected_value = Utils::getGET('parent', NULL);
     $fieldset->addElements($folderInput);
     $form->addElements($fieldset);
     $fieldset = new Fieldset(System::getLanguage()->_('FileUpload'));
     $fileInput = new FileUpload('file', System::getLanguage()->_('ChooseFile'), false);
     $fieldset->addElements($fileInput);
     $form->addElements($fieldset);
     if (DOWNLOAD_VIA_SERVER) {
         $fieldset = new Fieldset(System::getLanguage()->_('UploadFromURL'));
         $url = new Text('url', System::getLanguage()->_('EnterURL'), false);
         $name = new Text('name', System::getLanguage()->_('Name'), false);
         $name->setValue(System::getLanguage()->_('DownloadedFile'));
         $fieldset->addElements($url, $name);
         $form->addElements($fieldset);
     }
     $fieldset = new Fieldset(System::getLanguage()->_('PermissionSetting'));
     $permissionInput = new Select('permissions', System::getLanguage()->_('Permission'), FilePermissions::getAll());
     $permissionInput->selected_value = DEFAULT_FILE_PERMISSION;
     $password = new Password('password', System::getLanguage()->_('Password'), false);
     $fieldset->addElements($permissionInput, $password);
     $form->addElements($fieldset);
     if (Utils::getPOST('submit', false) != false) {
         if ($permissionInput->selected_value == 2 && empty($password->value)) {
             $password->error = System::getLanguage()->_('ErrorEmptyTextfield');
         } else {
             if ($form->validate() && (!empty($url->value) || !empty($fileInput->uploaded_file))) {
                 // Specify input control for error display
                 $err = empty($url->value) ? $fileInput : $url;
                 try {
                     $folder = Folder::find('_id', $folderInput->selected_value);
                     $file = new File();
                     $file->folder = $folder;
                     $file->permission = $permissionInput->selected_value;
                     $file->password = $password->value;
                     if (empty($url->value)) {
                         $file->filename = $fileInput->filename;
                         $file->upload($fileInput->uploaded_file);
                     } else {
                         $file->filename = $name->value;
                         $file->remote($url->value);
                     }
                     $file->save();
                     System::forwardToRoute(Router::getInstance()->build('BrowserController', 'show', $folder));
                     exit;
                 } catch (UploadException $e) {
                     $fileInput->filename = '';
                     $fileInput->uploaded_file = '';
                     $err->error = $e->getMessage();
                     if ($e->getCode() != 0) {
                         $err->error .= ' Code: ' . $e->getCode();
                     }
                 } catch (QuotaExceededException $e) {
                     $err->error = System::getLanguage()->_('ErrorQuotaExceeded');
                 } catch (Exception $e) {
                     $fileInput->filename = '';
                     $fileInput->uploaded_file = '';
                     $err->error = System::getLanguage()->_('ErrorWhileUpload') . ' ' . $e->getMessage();
                 }
             }
         }
     }
     $form->setSubmit(new Button(System::getLanguage()->_('Upload'), 'open'));
     if ($folderInput->selected_value == 0) {
         $form->addButton(new Button(System::getLanguage()->_('Cancel'), '', Router::getInstance()->build('BrowserController', 'index')));
     } else {
         $form->addButton(new Button(System::getLanguage()->_('Cancel'), '', Router::getInstance()->build('BrowserController', 'show', new Folder($folderInput->selected_value))));
     }
     $smarty = new Template();
     $smarty->assign('title', System::getLanguage()->_('Upload'));
     $smarty->assign('heading', System::getLanguage()->_('FileUpload'));
     $smarty->assign('form', $form->__toString());
     $smarty->assign('BODY_CLASS', 'preventreload');
     $smarty->requireResource('upload');
     $smarty->display('form.tpl');
 }
Example #7
0
 /**
  * Returns the default string representation of this form.
  *
  * @return string The form as '<form>...</form>'.
  * @see Formulaic\Form::__toString
  */
 public function __toString()
 {
     $this->attributes['method'] = 'get';
     return parent::__toString();
 }
Example #8
0
 /**
  * Register a new user
  */
 public function register()
 {
     $param = array('id' => 'register-form', 'model' => 'User', 'reference' => array('id' => -1), 'fieldsets' => array('global' => array('legend' => Lang::get($this->_plugin . '.register-connection-legend'), new TextInput(array('name' => 'username', 'required' => true, 'unique' => true, 'pattern' => '/^\\w+$/', 'label' => Lang::get($this->_plugin . '.register-username-label'))), new EmailInput(array('name' => 'email', 'required' => true, 'unique' => true, 'label' => Lang::get($this->_plugin . '.register-email-label'))), new PasswordInput(array('name' => 'password', 'required' => true, 'encrypt' => array('\\Hawk\\Crypto', 'saltHash'), 'label' => Lang::get($this->_plugin . '.register-password-label'))), new PasswordInput(array('name' => 'passagain', 'required' => true, 'independant' => true, 'label' => Lang::get($this->_plugin . '.register-passagain-label'), 'compare' => 'password'))), 'profile' => array('legend' => Lang::get($this->_plugin . '.register-profile-legend')), 'terms' => array(Option::get($this->_plugin . '.confirm-register-terms') ? new CheckboxInput(array('name' => 'terms', 'required' => true, 'independant' => true, 'labelWidth' => 'auto', 'label' => Lang::get($this->_plugin . '.register-terms-label', array('uri' => App::router()->getUri('terms'))))) : null), '_submits' => array(new SubmitInput(array('name' => 'valid', 'value' => Lang::get($this->_plugin . '.register-button'))), new ButtonInput(array('name' => 'cancel', 'value' => Lang::get($this->_plugin . '.cancel-button'), 'href' => App::router()->getUri('login'), 'target' => 'dialog')))), 'onsuccess' => 'app.dialog(app.getUri("login"))');
     $questions = ProfileQuestion::getRegisterQuestions();
     foreach ($questions as $question) {
         $field = json_decode($question->parameters, true);
         //if(!empty($field->roles) && in_array(Option::get('roles.default-role'), $field->roles)) {
         if ($question->isAllowedForRole(Option::get('roles.default-role'))) {
             $classname = 'Hawk\\' . ucwords($question->type) . 'Input';
             $field['name'] = $question->name;
             $field['independant'] = true;
             $field['label'] = Lang::get('admin.profile-question-' . $question->name . '-label');
             // At register, no field is readonly!
             $field['readonly'] = false;
             $param['fieldsets']['profile'][] = new $classname($field);
         }
     }
     $form = new Form($param);
     if (!$form->submitted()) {
         return Dialogbox::make(array('page' => $form->__toString(), 'icon' => 'sign-in', 'title' => Lang::get($this->_plugin . '.login-form-title'), 'width' => '50rem'));
     } else {
         if ($form->check()) {
             try {
                 $user = new User(array('username' => $form->inputs['username']->dbvalue(), 'email' => $form->inputs['email']->dbvalue(), 'password' => $form->inputs['password']->dbvalue(), 'active' => Option::get($this->_plugin . '.confirm-register-email') ? 0 : 1, 'createTime' => time(), 'createIp' => App::request()->clientIp(), 'roleId' => Option::get('roles.default-role')));
                 $user->save();
                 foreach ($questions as $question) {
                     if ($question->type === 'file') {
                         $upload = Upload::getInstance($question->name);
                         if ($upload) {
                             $file = $upload->getFile(0);
                             $dir = Plugin::current()->getUserfilesDir() . 'img/';
                             $url = Plugin::current()->getUserfilesUrl() . 'img/';
                             if (!is_dir($dir)) {
                                 mkdir($dir, 0755, true);
                             }
                             $upload->move($file, $dir);
                             $user->setProfileData($question->name, $url . $file->basename);
                         }
                     } else {
                         $user->setProfileData($question->name, $form->inputs[$question->name]->dbvalue());
                     }
                 }
                 $user->saveProfile();
                 if (Option::get($this->_plugin . '.confirm-register-email')) {
                     // Send an email to validate the registration
                     $tokenData = array('username' => $user->username, 'email' => $user->email, 'createTime' => $user->createTime, 'createIp' => $user->createIp);
                     $token = Crypto::aes256Encode(json_encode($tokenData));
                     $url = App::router()->getUrl('validate-registration', array('token' => $token));
                     $data = array('themeBaseCss' => Theme::getSelected()->getBaseCssUrl(), 'themeCustomCss' => Theme::getSelected()->getCustomCssUrl(), 'logoUrl' => Option::get($this->_plugin . '.logo') ? Plugin::current()->getUserfilesUrl(Option::get($this->_plugin . '.logo')) : Plugin::current()->getStaticUrl('img/hawk-logo.png'), 'sitename' => Option::get($this->_plugin . '.sitename'), 'url' => $url);
                     if (Option::get($this->_plugin . '.confirm-email-content')) {
                         $mailContent = View::makeFromString(Option::get($this->_plugin . '.confirm-email-content'), $data);
                     } else {
                         $mailContent = View::make(Plugin::current()->getView('registration-validation-email.tpl'), $data);
                     }
                     $mail = new Mail();
                     $mail->from(Option::get($this->_plugin . '.mailer-from'))->fromName(Option::get($this->_plugin . '.mailer-from-name'))->to($user->email)->title(Lang::get('main.register-email-title', array('sitename' => Option::get('main.sitename'))))->content($mailContent)->subject(Lang::get($this->_plugin . '.register-email-title', array('sitename' => Option::get($this->_plugin . '.sitename'))))->send();
                     return $form->response(Form::STATUS_SUCCESS, Lang::get($this->_plugin . '.register-send-email-success'));
                 } else {
                     // validate the registration
                     return $form->response(Form::STATUS_SUCCESS, Lang::get($this->_plugin . '.register-success'));
                 }
             } catch (Exception $e) {
                 return $form->response(Form::STATUS_ERROR, DEBUG_MODE ? $e->getMessage() : Lang::get($this->_plugin . '.register-error'));
             }
         }
     }
 }