Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 621

Přidáno uživatelem harryhk před více než 14 roky(ů)

Pridan kontroler pro zasilani sms zprav kompatibilni se systemem od firmy Materna communications (pouzivany napriklad v siti hkfree.org). V podsitich a oblastech pridana funkce vygenerovani telefonniho seznamu uzivatelu (contacts.conf) v jazyce XML. Lze importovat napriklad do aplikace b-sms plus.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php
'additional_contacts_infotext' => 'Další kontaktní informace',
'additional information' => 'Doplňkové informace',
'address' => 'Adresa',
'address book' => 'Telefonní adresář',
'address of connecting place' => 'Adresa přípojného místa',
'address map' => 'Adresní mapa',
'address point detail' => 'Detail adresního bodu',
......
'gateway name' => 'Jméno brány',
'general information' => 'Obecné informace',
'generate' => 'Generovat',
'generate address book' => 'Vytvořit telefonní adresář',
'generate dhcp files' => 'Generovat soubory DHCP',
'generate forward dns files' => 'Generovat dopředné soubory DNS',
'generate mac restriction files' => 'Generovat soubory MAC restrikcí',
......
'penalty have to be a number' => 'Pokuta musí být číslo',
'permanent' => 'Trvalé',
'phone' => 'Telefon',
'phone number' => 'Telefonní číslo',
'phone already exists in database' => 'Telefon je již v databázi',
'platform' => 'Platforma',
'please contact administrator' => 'Prosím kontaktujte administrátora.',
......
'send e-mail notification after expiration' => 'Poslat zprávu na e-mail po vypršení přesměrování',
'send money to other account' => 'Poslat peníze na jiný účet',
'send sms' => 'Pošli SMS',
'send sms message' => 'Poslat SMS zprávu',
'send to member' => 'Pošli členovi',
'september' => 'Září',
'service' => 'Služba',
freenetis/trunk/kohana/application/models/subnet.php
);
}
/**
* @author: Lubomir Buben
* Function gets phone numbers of users of subnet to export address book.
* @param $subnet_id
* @return unknown_type
*/
public function get_phones_of_subnet($subnet_id){
return self::$db->query("SELECT
DISTINCT (u.phone),
CONCAT(u.surname,' ',u.name) as name, u.id
FROM subnets su
LEFT JOIN ip_addresses ip ON ip.subnet_id = su.id
LEFT JOIN ifaces i ON i.id = ip.iface_id
LEFT JOIN devices d ON d.id = i.device_id
LEFT JOIN users u ON u.id = d.user_id
LEFT JOIN members m ON m.id = u.member_id
WHERE su.id = $subnet_id
");
}
}
?>
freenetis/trunk/kohana/application/controllers/clouds.php
$grid->action_field('id')->label(url_lang::lang('texts.Edit')) ->url(url_lang::base().'clouds/edit') ->action(url_lang::lang('texts.Edit'))->class('center');
//if ($this->acl_check_edit('Devices_Controller','vlan'))
$grid->action_field('id')->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'clouds/delete')->action(url_lang::lang('texts.Delete'))->class('center')->script('onclick="return potvrd(\''.url_lang::lang('texts.Do you want to delete this cloud').'\');"');
// $grid->action_field('id')->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'redirection/delete')->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.Do you want to delete this user').'\');"');
$grid->datasource( $query );
$this->template->content = $grid;
freenetis/trunk/kohana/application/controllers/users.php
$query = $model_users->get_all_users($sql_offset, (int)$limit_results, $order_by, $order_by_direction, $filter->values());
if ($total_users == 1)
url::redirect(url_lang::base().'users/show/'.$query->current()->id);
$arr_gets = array();
foreach ($this->input->get() as $key=>$value) $arr_gets[] = $key.'='.$value;
$query_string = '?'.implode('&',$arr_gets);
......
'limit_results' => $limit_results,
'query_string' => $query_string,
'filter' => $filter->view
));
));
//$grid->add_new_button(url_lang::base().'users/add', url_lang::lang('texts.Add new user'));
$grid->order_field('id')->label('ID');
......
$grid->order_field('login')->label(url_lang::lang('texts.Username'));
$grid->order_field('phone')->label(url_lang::lang('texts.Phone'));
if ($this->acl_check_view(get_class($this),'users'))
$grid->action_field('id') ->label(url_lang::lang('texts.User')) ->url(url_lang::base().'users/show') ->action(url_lang::lang('texts.Show'));
$grid->action_field('id') ->label(url_lang::lang('texts.User')) ->url(url_lang::base().'users/show') ->action(url_lang::lang('texts.Show'))->class('center');
if ($this->acl_check_edit(get_class($this),'users'))
$grid->action_field('id') ->label(url_lang::lang('texts.User')) ->url(url_lang::base().'users/edit') ->action(url_lang::lang('texts.Edit'));
$grid->action_field('id') ->label(url_lang::lang('texts.User')) ->url(url_lang::base().'users/edit') ->action(url_lang::lang('texts.Edit'))->class('center');
if ($this->acl_check_view('Devices_Controller','devices'))
$grid->action_field('id') ->label(url_lang::lang('texts.Devices')) ->url(url_lang::base().'devices/show_by_user')->action(url_lang::lang('texts.Show'));
$grid->action_field('id') ->label(url_lang::lang('texts.Devices')) ->url(url_lang::base().'devices/show_by_user')->action(url_lang::lang('texts.Show'))->class('center');
if ($this->acl_check_view('Users_Controller','work'))
$grid->action_field('id') ->label(url_lang::lang('texts.Works')) ->url(url_lang::base().'works/show_by_user')->action(url_lang::lang('texts.Show'));
$grid->action_field('id') ->label(url_lang::lang('texts.Works')) ->url(url_lang::base().'works/show_by_user')->action(url_lang::lang('texts.Show'))->class('center');
//if ($this->acl_check_view('Users_Controller','work'))
$grid->action_field('id') ->label(url_lang::lang('texts.Send sms')) ->url(url_lang::base().'sms/send')->action(url_lang::lang('texts.Send sms'))->class('center');
//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->order_field('email')->label('E-mail');
if ($this->acl_check_view(get_class($this),'users',$member_id))
$grid->action_field('id') ->label(url_lang::lang('texts.User')) ->url(url_lang::base().'users/show') ->action(url_lang::lang('texts.Show'));
if ($this->acl_check_edit(get_class($this),'users') || ($this->session->get('user_type') == User_Model::$member && $this->acl_check_edit(get_class($this),'users',$member_id)))
if ($this->acl_check_edit(get_class($this),'users',$member_id))
$grid->action_field('id') ->label(url_lang::lang('texts.User')) ->url(url_lang::base().'users/edit') ->action(url_lang::lang('texts.Edit'));
//if ($this->acl_check_delete(get_class($this),'users',$member_id))
// $grid->action_field('id')->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'users/delete')->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.delete_user').'\');"');
......
$this->user_id = $user_id;
//check if logged user have access right to edit this user
if(!$this->acl_check_edit(get_class($this),'users') && !($this->session->get('user_id') == $user_id && $this->acl_check_edit(get_class($this),'users',$user_model->member_id)))
if(!$this->acl_check_edit(get_class($this),'users',$user_model->member_id))
Controller::error(ACCESS);
// check if user is not member-type and logged user have access right to edit member of user
......
$form->input('username')->label(url_lang::lang('texts.username').':')
->rules('required|length[3,50]')
->callback(array($this, 'valid_username'))->value($user_model->login);
if ($this->acl_check_edit(get_class($this),'name',$user_model->member_id))
{
$form->input('pre_title')->label(url_lang::lang('texts.pre title').':')->rules('length[3,40]')->value($user_model->pre_title);
$form->input('name')->label(url_lang::lang('texts.name').':')->rules('required|length[3,30]')->value($user_model->name);
$form->input('middle_name')->label(url_lang::lang('texts.middle name').':')->rules('length[3,30]')->value($user_model->middle_name);
$form->input('surname')->label(url_lang::lang('texts.surname').':')->rules('required|length[3,60]')->value($user_model->surname);
$form->input('post_title')->label(url_lang::lang('texts.post title').':')->rules('length[3,30]')->value($user_model->post_title);
}
if ($this->acl_check_edit(get_class($this),'phone',$user_model->member_id) || $this->acl_check_edit(get_class($this),'email',$user_model->member_id))
$form->group('')->label(url_lang::lang('texts.Contact information'));
$form->input('pre_title')->label(url_lang::lang('texts.pre title').':')->rules('length[3,40]')->value($user_model->pre_title);
$form->input('name')->label(url_lang::lang('texts.name').':')->rules('required|length[3,30]')->value($user_model->name);
$form->input('middle_name')->label(url_lang::lang('texts.middle name').':')->rules('length[3,30]')->value($user_model->middle_name);
$form->input('surname')->label(url_lang::lang('texts.surname').':')->rules('required|length[3,60]')->value($user_model->surname);
$form->input('post_title')->label(url_lang::lang('texts.post title').':')->rules('length[3,30]')->value($user_model->post_title);
$form->group('')->label(url_lang::lang('texts.Contact information'));
if ($this->acl_check_edit(get_class($this),'phone',$user_model->member_id))
$form->input('phone')
->label(url_lang::lang('texts.phone').':')
......
$user_data = new User_Model;
$user_data->find($user_id);
$form_data['birthday'] = date("Y-m-d",$form_data['birthday']);
if ($this->acl_check_edit(get_class($this),'login',$user_data->member_id))
if ($this->acl_check_edit(get_class($this),'login',$user_data->member_id))
$form_data['login'] = $form_data['username'];
foreach($form_data as $key => $value)
......
if ($user_data->save())
{
// logged user is same as edited user
if ($this->session->get('user_id') == $user_id)
{
// change session's data
$this->session->set('username', $user_data->login);
$this->session->set('member_id', $user_data->member_id);
$this->session->set('user_name', $user_data->name);
$this->session->set('user_surname', $user_data->surname);
if ($user_data->type == User_Model::$member)
$this->session->set('member_login', $user_data->login);
}
$this->session->set_flash('message', url_lang::lang('texts.User has been successfully updated.'));
}
else
......
function add($member_id = null)
{
if (!$this->acl_check_new(get_class($this),'users') && !($this->session->get('user_type') == User_Model::$member && $this->acl_check_new(get_class($this),'users',$member_id)))
if (!$this->acl_check_new(get_class($this),'users',$member_id))
Controller::error(ACCESS);
if (isset($member_id))
......
function additional_contacts ($user_id = null)
{
$model_users = new User_Model($user_id);
if (!$this->acl_check_edit(get_class($this),'additional_contacts',$model_users->member_id)) Controller::error(ACCESS);
if (!$this->acl_check_view(get_class($this), 'additional_contacts') && !($this->session->get('user_id') == $user_id && $this->acl_check_view(get_class($this), 'additional_contacts', $model_users->member_id)))
Controller::error(ACCESS);
if (isset($user_id))
{
$model_contacts = new Contact_Model();
......
if ($user->id == 0)
Controller::error(RECORD);
// access control
if (!$this->acl_check_edit(get_class($this),'password') && !($this->session->get('user_id') == $user_id && $this->acl_check_edit(get_class($this),'password',$user->member_id)))
if (!$this->acl_check_edit(get_class($this),'password',$user->member_id))
Controller::error(ACCESS);
$this->user_id = $user_id;
......
$user = new User_Model($user_id);
// access control
if (!$this->acl_check_edit(get_class($this),'application_password') && !($this->session->get('user_id') == $user_id && $this->acl_check_edit(get_class($this),'application_password',$user->member_id)))
Controller::error(ACCESS);
if (!$this->acl_check_edit(get_class($this),'application_password',$user->member_id)) Controller::error(ACCESS);
$this->user_id = $user_id;
freenetis/trunk/kohana/application/controllers/sms.php
/**
* SMS controller.
*
* @author Sevcik Roman
* @copyright (c) 2009 Sevcik Roman
* @license GNU GPLv3
* @license http://www.gnu.org/licenses/gpl.txt
* @author Lubomir Buben
* @copyright (c) 2010 Lubomir Buben
*/
class SMS_Controller extends Controller
{
class Sms_Controller extends Controller{
public function index()
{
url::redirect(url::base());
public function index(){
url::redirect(url_lang::base().'sms/send');
}
public function send()
{
public function send($phone=null){
//if (!$this->acl_check_2D('freenetis', 'write_email'))
// Controller::error(ACCESS);
//username
$user_id=$this->session->get('member_id');
$user_model = new User_Model();
$user_model->find($user_id);
if ($user_model->id == 0)
Controller::error(RECORD);
$this->form = new Forge(url_lang::base()."sms/send", '', 'POST', array('id' => 'article_form'));
$this->form->set_attr('class', 'form_class')->set_attr('method', 'post');
$this->form->group('')->label(url_lang::lang('texts.Send sms message'));
if (isset($phone)){
$this->form->input('phone_number')->label(url_lang::lang('texts.Phone number').':')->rules('required|length[9,40]')->value($phone)->callback(array($this, 'valid_phone'));
}else{
$this->form->input('phone_number')->label(url_lang::lang('texts.Phone number').':')->rules('required|length[9,40]')->callback(array($this, 'callback_valid_phone'));
}
$this->form->textarea('message')->label(url_lang::lang('texts.Message'))->rules('required|length[0,1023]');
}
$this->form->submit('submit')->value(url_lang::lang('texts.Insert'));
special::required_forge_style($this->form, ' *', 'required');
}
//----- validate form and save data -----------------------------------
if($this->form->validate()){
$form_data = $this->form->as_array();
foreach($form_data as $key => $value){
$form_data[$key] = htmlspecialchars($value);
}
$sms_phone = $form_data['phone_number'];
$sms_text = $form_data['message'];
system("/var/www/sites/freenetis/freenetis/kohana/media/download/sendsms.sh hkf157-harry kaxadazy $sms_phone \"$sms_text\"");
unset($form_data);
if (true) {
$this->session->set_flash('message', url_lang::lang('texts.SMS message has been successfully sent.'));
url::redirect(url_lang::base().'sms');
exit;
}
}
//----- end validate --------------------------------------------------
$view = new View('main');
$view->title = url_lang::lang('texts.Send SMS message');
$view->content = new View('sms/sms_send');
$view->content->headline = url_lang::lang('texts.Send SMS message');
$view->content->form = $this->form->html();
$message = $this->session->get_once('message');
if (!empty($message))
$view->content->message = $message;
$view->render(TRUE);
}
/**
* @author: Lubomir Buben
* Function generates address book for subnet
* @return string
*/
function address_book_subnet($subnet_id=null){
$subnet = new Subnet_Model($subnet_id);
if (!$subnet_id || !$subnet->id){
Controller::error(RECORD);
url::redirect(url_lang::base().'subnets/show_all');
}
$text = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$text .= "<Contacts>\n";
$text .= $this->generate_subnet_address_book($subnet_id);
$text .= "</Contacts>\n";
// set content header
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="contacts.conf"');
echo ''.$text.'';
}
/**
* @author: Lubomir Buben
* Function generates address book for subnet
* @return string
*/
function address_book_cloud($cloud_id=null){
$cloud = new Cloud_Model($cloud_id);
if (!$cloud_id || !$cloud->id){
Controller::error(RECORD);
url::redirect(url_lang::base().'clouds/show_all');
}
//get cloud subnets
$subnet_model = new Subnet_Model();
$query = $subnet_model->get_subnet_of_cloud($cloud_id);
$text = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$text .= "<Contacts>\n";
foreach ($query as $row){
$text .= $this->generate_subnet_address_book($row->id);
}
$text .= "</Contacts>\n";
// set content header
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="contacts.conf"');
echo ''.$text.'';
}
/**
* Function generates address book for subnet.
* @param $subnet_id
* @return unknown_type
*/
function generate_subnet_address_book($subnet_id=null){
$subnet = new Subnet_Model();
$result = $subnet->get_phones_of_subnet($subnet_id);
$text = "";
foreach ($result as $row){
if($row->id != ""){
$text .= " <Contact id=\"$row->id\">\n";
$text .= " <DisplayName>$row->name</DisplayName>\n";
$text .= " <Numbers>\n";
$text .= " <MobileTelephoneNumber>$row->phone</MobileTelephoneNumber>";
$text .= " </Numbers>\n";
}
}
return $text;
}
/**
* Checks validity of phone number.
* @param $input phone number
* @return unknown_type
*/
function callback_valid_phone($input){
$value = trim($input->value);
if(!preg_match("/^[0-9]{9,9}$/",$value)){
$input->add_error('required', url_lang::lang('texts.Bad phone format.'));
}
}
}
freenetis/trunk/kohana/application/views/show_clouds.php
$links[] = $link_back;
//if ($this->acl_check_edit('Users_Controller','work',$work->user->member_id) && !$work->confirmed_by_id)
$links[] = html::anchor(url_lang::base().'clouds/edit/'.$cloud->id,url_lang::lang('texts.Edit'));
$links[] = html::anchor(url_lang::base().'sms/address_book_cloud/'.$cloud->id, url_lang::lang('texts.Generate address book'));
echo implode(' | ',$links);
freenetis/trunk/kohana/application/views/members_show.php
if (!$former && $this->acl_check_edit('Members_Controller', 'redirect', $member_data->member_id))
$links[] = html::anchor(url_lang::base().'redirect/member/'.$member_data->member_id, url_lang::lang('texts.Redirection'));
$links[] = html::anchor(url_lang::base().'members/registration_export/'.$member_data->member_id, url_lang::lang('texts.Registration'));
$links[] = html::anchor(url_lang::base().'members/registration_export/'.$member_data->member_id, url_lang::lang('texts.Export of registration'));
echo implode (' | ', $links)
?>
......
<?php if ($this->acl_check_2D('freenetis', 'write_email'))
if (valid::phone_cs_CZ($member_data->phone))
{
echo form::open(url_lang::base().'sms') ;
echo html::anchor(url_lang::base().'sms/send/'.$member_data->phone,url_lang::lang('texts.Send SMS'));
/*echo form::open(url_lang::base().'sms/send/'.$member_data->phone);
echo form::hidden('email_member_id', $member_data->member_id );
echo form::hidden('address', $member_data->phone );
echo form::imagebutton('submit', url::base().'media/images/sms.png', array('title' => url_lang::lang('texts.Send SMS'), 'style' => 'width:22px; height:22px; border-width: 0px 0px 0px 0px; border-spacing: 0px;'));
echo form::close();
echo form::close();*/
}
?>
</td>
freenetis/trunk/kohana/application/views/subnets_show.php
{
$links[] = html::anchor(url_lang::base().'export/csv/subnets/utf-8/'.$subnet->id, url_lang::lang('texts.Export to CSV (utf-8)'));
$links[] = html::anchor(url_lang::base().'export/csv/subnets/windows-1250/'.$subnet->id, url_lang::lang('texts.Export to CSV (windows-1250)'));
$links[] = html::anchor(url_lang::base().'sms/address_book_subnet/'.$subnet->id, url_lang::lang('texts.Generate address book'));
}
echo implode(' | ', $links);
?>

Také k dispozici: Unified diff