Esempio n. 1
0
 public function display($content)
 {
     if (!$this->render) {
         if (!headers_sent() && array_count($this->_headers) > 0) {
             foreach ($this->_headers as $key => $val) {
                 header($val);
             }
         }
         http_cache_off();
         if (!Cookie::isSaved()) {
             cookie()->save();
         }
         if (wasp_strlen($content) > 102400) {
             @ini_set('zlib.output_compression', 1);
         }
         echo $this->getDebugInfo($content);
         return;
     }
     $templater = new \Smarty();
     $templater->enableSecurity('Wasp_Smarty_Security');
     $templater->setTemplateDir($this->getThemePath() . DIR_SEP);
     $temp_dir = TEMP_DIR . DIR_SEP . 'smarty' . DIR_SEP . $this->getThemeName();
     if (!is_dir($temp_dir)) {
         wasp_mkdir($temp_dir);
     }
     $templater->setCompileDir($temp_dir . DIR_SEP);
     if (array_count($this->_assigns) > 0) {
         foreach ($this->_assigns as $key => $val) {
             $templater->assign($key, $val);
         }
     }
     $templater->assign('content', $content);
     if (function_exists('memory_get_peak_usage')) {
         $templater->assign('max_mem_use', get_mem_use(true));
     } else {
         $templater->assign('max_mem_use', '-//-');
     }
     $out = $templater->fetch($this->_layout);
     if (!headers_sent() && array_count($this->_headers) > 0) {
         foreach ($this->_headers as $key => $val) {
             header($val);
         }
     }
     if (!Cookie::isSaved()) {
         cookie()->save();
     }
     if (wasp_strlen($out) > 102400) {
         ini_set('zlib.output_compression', 1);
     }
     unset($templater);
     memory_clear();
     /**
      * Add CSS
      */
     if (array_count($this->_css_list) > 0) {
         $_ = "\n\t\t<!-- DYNAMIC CSS -->\n";
         foreach ($this->_css_list as $key => $val) {
             if (preg_match('/^http/is', $val)) {
                 $_ .= "\t\t<link href=\"{$val}\" rel=\"stylesheet\" type=\"text/css\" />\n";
             } else {
                 $url = $this->getThemeUrl() . '/css/' . $val;
                 $_ .= "\t\t<link href=\"{$url}\" rel=\"stylesheet\" type=\"text/css\" />\n";
             }
         }
         $out = preg_replace('#\\<\\/head\\>#is', $_ . "</head>\n", $out);
         unset($_, $key, $val, $url);
     }
     /**
      * Add JS
      */
     if (array_count($this->_js_list) > 0) {
         $info = "\n\t\t<!-- :position DYNAMIC JS -->\n";
         foreach ($this->_js_list as $pos => $item) {
             $_ = str_replace(':position', wasp_strtoupper($pos), "\n\t\t<!-- :position DYNAMIC JS -->\n");
             if (array_count($item) > 0) {
                 foreach ($item as $key => $val) {
                     if (preg_match('/^http/is', $val)) {
                         $_ .= "\t\t<script type=\"text/javascript\" src=\"{$val}\"></script>\n";
                     } else {
                         $url = $this->getThemeUrl() . '/js/' . $val;
                         $_ .= "\t\t<script type=\"text/javascript\" src=\"{$url}\"></script>\n";
                     }
                 }
                 $out = preg_replace("#\\<\\/{$pos}\\>#is", $_ . "</{$pos}>\n", $out);
                 unset($_, $key, $val, $url);
             }
         }
         unset($pos, $item);
     }
     echo $this->getDebugInfo($out);
 }
Esempio n. 2
0
 public function anyAdd()
 {
     $confirm = $this->input->post('confirm');
     $form = $this->input->post('form');
     $errors = [];
     if (!empty($confirm) && $confirm == 'ok') {
         $validator = new \Wasp\Validator($form, $this->validation);
         if (!$validator->checkAll()) {
             $errors = $validator->getMessages();
         }
         $check_user = $this->users->getByEmail($form['email']);
         $user_data = [];
         if (!empty($check_user->id)) {
             if (!isset($errors['email']) || !is_array($errors['email'])) {
                 $errors['email'] = [];
             }
             $errors['email'][] = 'Такой пользователь уже есть';
         }
         if (!is_alphanum($form['passwd1']) || !is_alphanum($form['passwd2']) || wasp_strlen($form['passwd1']) > 16 || wasp_strlen($form['passwd1']) < 6 || wasp_strlen($form['passwd2']) > 16 || wasp_strlen($form['passwd2']) < 6 || $form['passwd1'] != $form['passwd2']) {
             if (!isset($errors['passwd1']) || !is_array($errors['passwd1'])) {
                 $errors['passwd1'] = [];
             }
             $errors['passwd1'][] = 'Неверное указан пароль';
         }
         if (array_count($errors) == 0) {
             $current_user = $this->auth->getAuthUser();
             $group_level = $this->users->getGroupLevel($form['group_id']);
             $passwd = password_crypt($form['passwd1']);
             $user_data['email'] = $form['email'];
             $user_data['password'] = $passwd;
             if ($this->users->groupIdExists($form['group_id']) && ($group_level < $current_user->group->level || $this->auth->isRoot())) {
                 $user_data['group_id'] = intval($form['group_id']);
                 $user_data['blocked'] = intval($form['blocked']);
             }
             if ($this->auth->isAdmin()) {
                 foreach ($form as $key => $val) {
                     if (!array_key_isset($key, $user_data)) {
                         $user_data[$key] = $val;
                     }
                 }
             }
             $id = $this->users->create($user_data);
             redirect(['controller' => 'users', 'method' => 'edit', 'id' => $id, 'message' => 'Пользователь успешно добавлен в систему.']);
         }
     }
     $this->layout->useThemeCss('datepicker.css')->useThemeJs('bootstrap-datepicker.js', false);
     return $this->ui->assign('errors', $errors)->assign('form', $form)->assign('groups', $this->users->getGroups())->fetch('users/add');
 }
Esempio n. 3
0
 /**
  * Protectedm method for check one rule
  * 
  * @param string $key
  * @param mixed $value
  */
 protected function _check($key, $value)
 {
     if (!array_key_isset($key, $this->rules)) {
         return false;
     }
     if (!is_scalar($value)) {
         return false;
     }
     $rules = $this->rules[$key];
     if (is_callable($rules)) {
         return $rules($key, $value);
     }
     if (isset($rules['required']) && $rules['required'] == true && $value == '') {
         $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['required']);
         return false;
     }
     if ((!isset($rules['required']) || $rules['required'] == false) && $value == '') {
         return true;
     }
     if (isset($rules['regexp']) && !empty($rules['regexp']) && !preg_match($rules['regexp'], $value, $tmp)) {
         $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['regexp']);
         return false;
     } else {
         if (isset($rules['validator'])) {
             $validator = 'is_' . $rules['validator'];
             if (!$validator($value)) {
                 $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['regexp']);
             }
         }
     }
     if (isset($rules['maxlen']) && wasp_strlen($value) > intval($rules['maxlen'])) {
         $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['maxlen'], ['maxlen' => intval($rules['maxlen'])]);
         return false;
     }
     if (isset($rules['minlen']) && wasp_strlen($value) < intval($rules['minlen'])) {
         $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['minlen'], ['minlen' => intval($rules['minlen'])]);
         return false;
     }
     if (isset($rules['max'])) {
         if (!is_numeric($value)) {
             $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['numeric']);
             return false;
         } else {
             if ($value > $rules['max']) {
                 $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['max'], ['max' => intval($rules['max'])]);
                 return false;
             }
         }
     }
     if (isset($rules['min'])) {
         if (!is_numeric($value)) {
             $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['numeric']);
             return false;
         } else {
             if ($value < $rules['min']) {
                 $this->messages[$key] = !empty($rules['message']) ? $rules['message'] : ufl($this->errors['min'], ['min' => intval($rules['min'])]);
                 return false;
             }
         }
     }
     return true;
 }