Показать сообщение отдельно
  #2  
Старый 23.09.2009, 22:11
Аватар для Handy.CMS
Handy.CMS Handy.CMS вне форума
Администратор
 
Регистрация: 25.07.2009
Сообщений: 170
Handy.CMS отключил(а) отображение уровня репутации
По умолчанию

10. Модуль "Формы" - возможность использования другими модулям

Модуль "Формы" претерпел революционные изменения, теперь его могут использовать другие модули в собственных целях. Это сделано для удобства создания различных форм и анкет внешними разработчиками и автоматизации профессов проверки, заполнения и отправки данных из форм.

Для использования формы из модуля, необходимо:
1) Установить системное имя формы и статус зарезервированности в таблице forms: значения полей reserved="true" и form_type="системное_имя_на_латинице"

Теперь форма может быть вызвана любым модулем.
Она также стала недоступна для удаления, а также прикрепления ее к странице.

Для вызова формы и получение ее содержимого используется функция:




PHP код:
self::getFormContents($form_type=false$show_title=false
, где
  • form_type - системное имя формы на латинице (значение поля form_type из таблицы базы данных forms)
  • show_title - отображение названия формы на странице true / false
Для автоматической проверки значений формы и отправки письма:

PHP код:
self::checkFormContents($form_type=false$show_title=false$text



Значения первых двух переменных аналогичны self::getFormContents
  • $text - текст, добавляемый к письму, при отправке формы
В случае, если у формы установлено одно или несколько полей с системным именем email, оно заполнено пользователем, на данные адреса также будут отправлены письма с данными из формы. Это удобно, в случае, если необходимо уведомлять об успешной отправке формы не только администратора, но и пользователя, дублируя ему информацию.


11. Модуль "Формы" - добавлена возможность валидации полей формы модулем

В случае, если возможностей встроенных правил валидации полей не хватает, в поле field_validation таблицы form_fields можно указать название модуля, который будет вызван для проверки корректности заполненности поля.

Для осуществления проверки у данного модуля должна быть определена функция проверки:
PHP код:
public function fieldValidation($field_type$field_value){
 return array (
validate => true [,message => ""]);
 
 


  • $field_type - передается системное имя поля (значение поля form_type из таблицы базы данных forms)
  • $field_value - передается заполненное пользователем значение
Функция должна вернуть массив, содержащий обязательный ключ validate с значением true - если поле прошло валидацию, false - если не прошло.

Ключ message - опционален и содержит текст сообщения об ошибке, который выводится пользователю, в случае если поле не прошло валидацию.



Пример использования:

PHP код:
private $city_title;
public function 
fieldValidation($field_type$field_value){
  
// Если не передано название поля или у поля пустое значение
  
if($field_type==NULL || $field_value==NULL$callback['validate'] = false;
  
// Устанавливаем первичный флаг валидации
  
$callback['validate'] = true;
  if(
$field_type=="city_title") {
   
$contents $this->database->sqlParse("SELECT city_title FROM cities WHERE city_title=?"$field_value);
   if(
$contents[0]==NULL$callback['validate'] = true;
   else 
$callback['validate'] = false;
  }
  
$callback['message'] = "Город <b>".htmlspecialchars($field_value)."</b> уже есть в базе.";
  return 
$callback;
 }
public function 
onExecute($param_str) {
  
// Подгружаем управляющий модуль "Формы"
  
$forms handyCore::loadExtension 'ext.forms' );
 if(
$_POST) {
    
// Текст, добавляемый перед данными из формы
        
$text "Добавленный город:\n";
        
// $form_data хранит значения всех заполненных пользователем полей, 
        // при этом к полям, имеющим системное имя можно обращаться как к ключу
        // $form_data[form_type]
        
$form_data $forms->checkFormContents("cities",  true$text);
        
// Присваиваем значение системного поля city_title переменной
     
$this->city_title $form_data['city_title']
  if(
$form_data['form_data']['form_fields']!=NULL) {
   
// Действия модуля с формой
      // Например внесение данных в БД
      
$this->database ->sqlParse('INSERT INTO cities SET city_title=?'$this->city_title);
     }
   } else {
 if(
$form_data $forms->getFormContents("cities"true))){
     } else 
$error "cities_form_not_found";    
   }
   return array (
    
'form' => $form_data['contents'], 
 
'template' => 'users_registration.tpl'
 
'error' => $error
 
);

12. Возможность работы системы на 64-bit машинах
Добавлена возможность работы системы на серверах 64-bit

Список будет пополняться
__________________
Команда Handy.CMS