Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 1019

Přidáno uživatelem Michal Kliment před více než 13 roky(ů)

Dokonceny filtry u vypisu vsech uzivatelu.

Zobrazit rozdíly:

freenetis/branches/search_filters/application/models/user.php
if ($filter_sql != '')
$where .= 'WHERE '.$filter_sql;
if ($member_id)
$where .= ($where != '') ? ' AND member_id = '.intval ($member_id) : 'WHERE member_id = '.intval ($member_id);
return $this->db->query('
SELECT * FROM
(
SELECT u.*, m.name AS member, c.value AS email FROM users u
SELECT
u.*,
m.name AS member_name,
IFNULL(email,"") AS email,
IFNULL(phone,"") AS phone,
IFNULL(jabber,"") AS jabber,
IFNULL(icq,"") AS icq
FROM users u
JOIN members m ON u.member_id = m.id
LEFT JOIN users_contacts uc ON u.id = uc.user_id
LEFT JOIN contacts c ON uc.contact_id = c.id AND c.type = 21
LEFT JOIN
(
SELECT uc.user_id, c.value AS email FROM users_contacts uc
JOIN contacts c ON uc.contact_id = c.id AND c.type = '.Contact_Model::TYPE_EMAIL.'
) e ON e.user_id = u.id
LEFT JOIN
(
SELECT uc.user_id, c.value AS phone FROM users_contacts uc
JOIN contacts c ON uc.contact_id = c.id AND c.type = '.Contact_Model::TYPE_PHONE.'
) p ON p.user_id = u.id
LEFT JOIN
(
SELECT uc.user_id, c.value AS jabber FROM users_contacts uc
JOIN contacts c ON uc.contact_id = c.id AND c.type = '.Contact_Model::TYPE_JABBER.'
) j ON j.user_id = u.id
LEFT JOIN
(
SELECT uc.user_id, c.value AS icq FROM users_contacts uc
JOIN contacts c ON uc.contact_id = c.id AND c.type = '.Contact_Model::TYPE_ICQ.'
) i ON i.user_id = u.id
) AS u
'.$where.'
GROUP BY u.id
ORDER BY '.$order_by.' '.$order_by_direction.'
LIMIT '.$limit_from.','.$limit_results
);
}
/**
* Counts all users with respect to filter's values
*
* @author Michal Kliment
* @param string $filter_sql
* @param integer $member_id
* @return integer
*/
public function count_all_users($filter_sql='', $member_id=NULL)
{
$where = '';
if ($filter_sql != '')
$where .= 'WHERE '.$filter_sql;
if ($member_id)
$where .= ($where != '') ? ' AND member_id = '.intval ($member_id) : 'WHERE member_id = '.intval ($member_id);
return $this->db->query('
SELECT COUNT(*) AS total FROM
(
SELECT * FROM
(
SELECT
u.*,
m.name AS member_name,
IFNULL(email,"") AS email,
IFNULL(phone,"") AS phone,
IFNULL(jabber,"") AS jabber,
IFNULL(icq,"") AS icq
FROM users u
JOIN members m ON u.member_id = m.id
LEFT JOIN
(
SELECT uc.user_id, c.value AS email FROM users_contacts uc
JOIN contacts c ON uc.contact_id = c.id AND c.type = '.Contact_Model::TYPE_EMAIL.'
) e ON e.user_id = u.id
LEFT JOIN
(
SELECT uc.user_id, c.value AS phone FROM users_contacts uc
JOIN contacts c ON uc.contact_id = c.id AND c.type = '.Contact_Model::TYPE_PHONE.'
) p ON p.user_id = u.id
LEFT JOIN
(
SELECT uc.user_id, c.value AS jabber FROM users_contacts uc
JOIN contacts c ON uc.contact_id = c.id AND c.type = '.Contact_Model::TYPE_JABBER.'
) j ON j.user_id = u.id
LEFT JOIN
(
SELECT uc.user_id, c.value AS icq FROM users_contacts uc
JOIN contacts c ON uc.contact_id = c.id AND c.type = '.Contact_Model::TYPE_ICQ.'
) i ON i.user_id = u.id
) AS u
'.$where.'
GROUP BY u.id
) q
')->current()->total;
}
/**
* Login test function
*
* @param string $username
......
}
/**
* Counts all users
*
* @param array $filter_values
* @param numeric $member_id
* @return numeric
*/
public function count_all_users($filter_values = array(), $member_id=NULL)
{
$where = '';
if (count($filter_values)>0)
$where .= 'WHERE ';
foreach($filter_values as $key => $value)
{
if ($key!='submit')
{
if ($where!='WHERE ')
$where .= ' AND ';
$where .= $this->arr_sql[$key].' LIKE \'%'.trim($value).'%\' COLLATE utf8_general_ci';
}
}
if ($member_id)
{
if($where=='') $where = 'WHERE u.member_id = '.$member_id;
else $where .= ' AND u.member_id = '.$member_id;
}
$users = $this->db->query('
SELECT u.id, u.name, u.surname, u.login, u.member_id, m.name AS member_name
FROM users u
LEFT JOIN members m on m.id = u.member_id
LEFT JOIN users_contacts uc ON u.id = uc.user_id
LEFT JOIN contacts c ON uc.contact_id = c.id AND c.type = (SELECT id FROM enum_types WHERE value = \'E-mail\')
'.$where.'
GROUP BY u.id');
return count($users);
}
/**
* Counts all users belong to member
*
* @param numeric $member_id
freenetis/branches/search_filters/application/controllers/users.php
* @return unknown_type
*/
function show_all($limit_results = 500, $order_by = 'id', $order_by_direction = 'asc', $page_word = null, $page = 1)
{
{
if (!$this->acl_check_view(get_class($this), 'users'))
Controller::error(ACCESS);
......
$filter_form->add('name')->callback('json/user_name');
$filter_form->add('surname')->callback('json/user_surname');
$filter_form->add('login')->label(url_lang::lang('texts.Login name'))->callback('json/user_login');
$filter_form->add('member')->type('select')->callback('json/member_name');
$filter_form->add('member_name')->type('combo')->callback('json/member_name');
$filter_form->add('type')->type('select')->values(array(User_Model::$member => url_lang::lang('texts.Main'), User_Model::$user => url_lang::lang('texts.Collateral')));
$filter_form->add('email')->callback('json/user_email');
$filter_form->add('phone')->callback('json/user_phone');
$filter_form->add('icq')->label('ICQ')->callback('json/user_icq');
$filter_form->add('jabber')->callback('json/user_jabber');
// get new selector
if (is_numeric($this->input->get('record_per_page'))) $limit_results = (int) $this->input->get('record_per_page');
......
$model_users = new User_Model();
$filter=new Table_Form(url_lang::base()."users/show_all", "get", array(
$total_users = $model_users->count_all_users($filter_form->as_sql());
new Table_Form_Item('text','surname','Surname'),
new Table_Form_Item('text','name','Name'),
"tr",
new Table_Form_Item('text','login','Login name'),
new Table_Form_Item('text','member_name','Member'),
"tr",
new Table_Form_Item('text','email', 'E-mail'), "td",
new Table_Form_Item('submit','submit','Filter')
)
);
$total_users = $model_users->count_all_users($filter->values());
if (($sql_offset = ($page - 1) * $limit_results) > $total_users)
$sql_offset = 0;
$query = $model_users->get_all_users($sql_offset, (int)$limit_results, $order_by, $order_by_direction, $filter_form->as_sql());
$arr_gets = array();
foreach ($this->input->get() as $key=>$value) $arr_gets[] = $key.'='.$value;
$query_string = '?'.implode('&',$arr_gets);
$grid = new Grid(url_lang::base().'users', url_lang::lang('texts.List of all users'),array(
//'separator' => '',
//'use_paginator' => false,
......
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'limit_results' => $limit_results,
'query_string' => $query_string,
'filter' => $filter_form
));
......
//if ($this->acl_check_delete(get_class($this),'users'))
// $grid->action_field('id')->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/delete')->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.delete_user').'\');"');
$grid->datasource($query);
$grid->datasource($query);
$view = new View('main');
$view->breadcrumbs = url_lang::lang('texts.Users');
freenetis/branches/search_filters/application/controllers/members.php
$filter_form = new Filter_form('m');
$filter_form->add('id')->type('number');
$filter_form->add('name')->callback('json/member_name');
$filter_form->add('type')->type('select')->values(ORM::factory('enum_type')->get_values(Enum_type_Model::$member_type_id));
$filter_form->add('membership_interrupt')->type('select')->values(array(url_lang::lang('texts.Yes'), url_lang::lang('texts.No')));
$filter_form->add('type')->type('combo')->values(ORM::factory('enum_type')->get_values(Enum_type_Model::$member_type_id));
$filter_form->add('membership_interrupt')->type('combo')->values(array(url_lang::lang('texts.Yes'), url_lang::lang('texts.No')));
$filter_form->add('balance')->table('a')->type('number');
$filter_form->add('redirect')->label(url_lang::lang('texts.Redirection'))->type('bit')->return('key')->values(array("~16" => url_lang::lang('texts.nonei'), 1 => url_lang::lang('texts.Membership interrupt'), 2 => url_lang::lang('texts.Debtor'), 4 => url_lang::lang('texts.Payment notice'), 8 => url_lang::lang('texts.Optional message')));
$filter_form->add('redirect')->label(url_lang::lang('texts.Redirection'))->type('bit')->values(array("~16" => url_lang::lang('texts.nonei'), 1 => url_lang::lang('texts.Membership interrupt'), 2 => url_lang::lang('texts.Debtor'), 4 => url_lang::lang('texts.Payment notice'), 8 => url_lang::lang('texts.Optional message')));
$filter_form->add('variable_symbol')->callback('json/variable_symbol');
$filter_form->add('comment');
$filter_form->add('registration')->type('select')->values(array(url_lang::lang('texts.Yes'), url_lang::lang('texts.No')));
$filter_form->add('registration')->type('combo')->values(array(url_lang::lang('texts.Yes'), url_lang::lang('texts.No')));
$filter_form->add('organization_identifier');
$filter_form->add('town')->type('select')->table('t')->callback('json/town_name');
$filter_form->add('street')->type('select')->table('s')->callback('json/street_name');
$filter_form->add('town')->type('combo')->table('t')->callback('json/town_name');
$filter_form->add('street')->type('combo')->table('s')->callback('json/street_name');
$filter_form->add('street_number')->type('number')->table('ap');
// gets new selector
freenetis/branches/search_filters/application/controllers/json.php
echo json_encode($arr_contacts);
}
public function user_phone ()
{
$term = $this->input->get('term');
$contact_model = new Contact_Model();
$contacts = $contact_model->where('type', Contact_Model::TYPE_PHONE)->like('value', $term)->groupby('value')->orderby('value')->find_all();
$arr_contacts = array();
foreach ($contacts as $member)
$arr_contacts[] = $member->value;
echo json_encode($arr_contacts);
}
public function user_icq ()
{
$term = $this->input->get('term');
$contact_model = new Contact_Model();
$contacts = $contact_model->where('type', Contact_Model::TYPE_ICQ)->like('value', $term)->groupby('value')->orderby('value')->find_all();
$arr_contacts = array();
foreach ($contacts as $member)
$arr_contacts[] = $member->value;
echo json_encode($arr_contacts);
}
public function user_jabber ()
{
$term = $this->input->get('term');
$contact_model = new Contact_Model();
$contacts = $contact_model->where('type', Contact_Model::TYPE_JABBER)->like('value', $term)->groupby('value')->orderby('value')->find_all();
$arr_contacts = array();
foreach ($contacts as $member)
$arr_contacts[] = $member->value;
echo json_encode($arr_contacts);
}
}
freenetis/branches/search_filters/application/libraries/Filter_form.php
)
);
protected $operation_types = array(
'select' => array(3,4,1,2),
'combo' => array(3,4,1,2),
'select' => array(3,4),
'text' => array(1,2,3,4),
'number' => array(5,6,7,8,9,10),
'bit' => array(11,12),
);
protected $minlengths = array(
'combo' => 0,
'select' => 0,
'text' => 3,
'bit' => 0
);
protected $returns = array(
'combo' => 'value',
'select' => 'key',
'text' => 'value',
'bit' => 'key',
'number' => 'value'
);
public function __construct($table = '')
{
$this->table = $table;
......
$value = trim($this->values[$i]);
if ($filter->return == 'key' && array_search($value, $filter->values) !== FALSE)
if ($this->returns[$filter->type] == 'key' && array_search($value, $filter->values) !== FALSE)
$value = array_search($value, $filter->values);
$queries[] = "$filter->table.$filter->name ".str_replace("{VALUE}", mysql_real_escape_string($value), $this->opers[$this->operations[$i]]['sql']);
freenetis/branches/search_filters/system/views/kohana_error_page.php
<input type="hidden" name="description" value="<?php echo htmlspecialchars($description) ?>" />
<input type="hidden" name="detail" value="<?php echo htmlspecialchars(Kohana::lang('core.error_message', $line, $file)) ?>" />
<input type="hidden" name="trace" value="<?php if (isset($trace)) echo htmlspecialchars($trace); ?>" />
<input type="hidden" name="message" value="<?php echo (isset($message)) ? $message : '' ?>" />
</table>
</form>
<h2><?php echo $error ?></h2>

Také k dispozici: Unified diff