| | |
| | | const ERROR_NO_CONNECTION = 2; |
| | | const ERROR_INCOMPLETE = 3; |
| | | const ERROR_SAVING = 4; |
| | | const ERROR_SEARCH = 5; |
| | | |
| | | /** public properties (mandatory) */ |
| | | public $primary_key; |
| | | public $groups = false; |
| | | public $readonly = true; |
| | | public $ready = false; |
| | | public $group_id = null; |
| | | public $list_page = 1; |
| | | public $page_size = 10; |
| | | public $coltypes = array('name' => array('limit'=>1), 'firstname' => array('limit'=>1), 'surname' => array('limit'=>1), 'email' => array('limit'=>1)); |
| | |
| | | { |
| | | $this->page_size = (int)$size; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Check the given data before saving. |
| | | * If input not valid, the message to display can be fetched using get_error() |
| | | * |
| | | * @param array Assoziative array with data to save |
| | | * @return boolean True if input is valid, False if not. |
| | | */ |
| | | public function validate($save_data) |
| | | { |
| | | if (empty($save_data['name'])) { |
| | | $this->set_error('warning', 'nonamewarning'); |
| | | return false; |
| | | } |
| | | |
| | | // check validity of email addresses |
| | | foreach ($this->get_col_values('email', $save_data, true) as $email) { |
| | | if (strlen($email)) { |
| | | if (!check_email(rcube_idn_to_ascii($email))) { |
| | | $this->set_error('warning', rcube_label(array('name' => 'emailformaterror', 'vars' => array('email' => $email)))); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Create a new contact record |
| | |
| | | |
| | | return $out; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Normalize the given string for fulltext search. |
| | | * Currently only optimized for Latin-1 characters; to be extended |
| | | * |
| | | * @param string Input string (UTF-8) |
| | | * @return string Normalized string |
| | | */ |
| | | protected static function normalize_string($str) |
| | | { |
| | | $norm = strtolower(strtr(utf8_decode($str), |
| | | 'ÇçäâàåéêëèïîìÅÉöôòüûùÿøØáíóúñÑÁÂÀãÃÊËÈÍÎÏÓÔõÕÚÛÙýÝ', |
| | | 'ccaaaaeeeeiiiaeooouuuyooaiounnaaaaaeeeiiioooouuuyy')); |
| | | |
| | | return preg_replace( |
| | | array('/[\s;\+\-\/]+/i', '/(\d)\s+(\d)/', '/\s\w{1,3}\s/'), |
| | | array(' ', '\\1\\2', ' '), |
| | | $norm); |
| | | } |
| | | |
| | | } |
| | | |