Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 969

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

U clena pridana moznost přidat trvalou adresu. Mirne vylepsena prace s adresnimi body.

Zobrazit rozdíly:

freenetis/branches/testing/application/i18n/cs_CZ/texts.php
'address' => 'Adresa',
'address book' => 'Telefonní adresář',
'address of connecting place' => 'Adresa přípojného místa',
'address of connecting place is different than address of domicile' => 'Adresa přípojného místa je různá od adresy trvalého bydliště',
'address of domicile' => 'Adresa trvalého bydliště',
'address map' => 'Adresní mapa',
'address point' => 'Adresní bod',
'address point detail' => 'Detail adresního bodu',
......
'at least one address point uses this street' => 'Alespoň jeden adresní bod používá tuto ulici.',
'at least one address point uses this town' => 'Alespoň jeden adresní bod používá toto město.',
'at least one interface or port still uses this segment' => 'Ještě nejméně jedno rozhraní nebo port používá tento segment.',
'at least one item still has this address point' => 'Ještě nejméně jedna položka používá tento adresní bod.',
'at least one member still has this address point' => 'Alespoň jeden člen má tento adresní bod.',
'auditing comittee' => 'Revizní komise',
'august' => 'Srpen',
......
'confirmed by' => 'Potvrzeno od',
'confirmed time' => 'Čas potvrzení',
'confirmed works' => 'Potvrzené práce',
'connecting place' => 'Přípojné místo',
'connections' => 'Připojení',
'constant symbol' => 'Konstantní symbol',
'contact is owned by another user' => 'Kontakt je vlastněn jiným uživatelem',
......
'device_type' => 'Typ zařízení',
'devices list' => 'Seznam zařízení',
'devices' => 'Zařízení',
'devices on this address' => 'Zařízení na této adrese',
'dhcp configuration' => 'Konfigurace DHCP',
'dhcp configuration file was successfully generated' => 'Konfigurační soubor pro DHCP byl úspěšně vygenerován',
'direction' => 'Směr',
......
'domain' => 'Doména',
'document' => 'dokument',
'documentation' => 'Dokumentace',
'domicile' => 'Bydliště',
'domicile' => 'Trvalé bydliště',
'double entry account' => 'Podvojný účet',
'double-entry accounts' => 'Podvojné účty',
'driver' => 'Ovladač',
......
'item' => 'Položka',
'item number' => 'Položka č.',
'item separator' => 'Oddělovač položek',
'items count' => 'Počet položek',
'item(s) have been successfully added' => 'položka(ek) bylo úspěšně přidáno',
'is not in system' => 'Není v systému',
'is not telephonists' => 'Není telefonista',
......
'member_name' => 'Jméno člena (organizace)',
'members' => 'Členové',
'members account' => 'Účet člena',
'members on this address' => 'Členové na této adrese',
'membership can be ended only to former member' => 'Členství může být ukončeno jen bývalému členovi.',
'membership interrupt' => 'Přerušení členství',
'membership interrupt text' => 'Text pro přerušení členství',
......
'this account does not exist' => 'Tento účet neexistuje.',
'this approval template already contains approval type with the same priority' => 'Tato hlasovací šablona již obsahuje hlasovací typ se stejnou prioritou.',
'this approval template already contains this approval type' => 'Tato hlasovací šablona již obsahuje tento hlasovací typ.',
'this information is required' => 'Tento údaj je povinný.',
'this member has already set up this fee type for this interval' => 'Tento člen má již nastaven tento typ poplatku pro tento interval.',
'this member has default system member fee %d %s' => 'Tento člen má výchozí systémový členský příspěvek %d %s.',
'this month has been already deducted!' => 'Tento měsíc už byl stržen!',
......
'your work has been rejected' => 'Vaše práce byla zamítnuta',
'your work has been updated' => 'Vaše práce byla aktualizována',
'zip code' => 'PSČ'
);
);
freenetis/branches/testing/application/i18n/cs_CZ/help.php
'add_new_bank_transfer_without_counteraccount' => 'Umožňuje přidat bankovní převod bez protiúčtu, jde typicky o vklad, úrok bance apod. V běžném provozu využívejte automatický import výpisů. Ruční přidávání je tu pouze z důvodu, že byla potřeba dát do systému staré platby, které již nebylo možné parsovat.',
'add_new_transfer' => 'Zobrazí formulář, který umožňuje hospodáři sdružení přidat libovolný převod mezi dvěma podvojnými účty. Účetní korektnost tohoto zásahu je ovšem v zodpovědnosti účetního.',
'add_from_account' => 'Umožňuje poslat peníze z účtu na jiný účet. Například člen může poslat peníze na projektový účet na podporu nějakého projektu nebo jinému členovi, např. zaplatit rodičům internet, pokud mají samostatnou přípojku.',
'address_point_member_connecting_place' => 'Jedná se pouze o přípojné místo člena. Trvalé bydliště má na jiné adrese.',
'address_point_member_domicile' => 'Člen má na této adrese trvalé bydliště.',
'allowed_subnets' => 'Jedná se o možnost omezovat provoz členů na určitý počet současně jedoucích přípojných míst. Předpokládá, že každé přípojné místo člena se nachází v jiné podsíti.',
'allowed_subnets_count' => 'Jedná se o maximální počet současně povolených podsítí člena. IP adresám mimo těchto podsítí bude blokován přístup na internet (formou přesměrování). Nula znamená neomezený počet.',
'allowed_subnets_default_count' => 'Jedná se o výchozí počet současně povolených podsítí člena. IP adresám mimo těchto podsítí bude blokován přístup na internet (formou přesměrování). Nula znamená neomezený počet.',
......
'ulogd_update_interval' => 'Interval aktualizace ulogd v sekundách. Po uplynutí této doby se zaktualizují počítadla provozu členů a najdou se příliš aktivní členové. Výchozí hodnota je 1800 sekund (30 minut).',
'unidentified_transfers' => 'Neidentifikované platby jsou všechny příchozí bankovní platby, které nebyl náš systém schopen z různých důvodů automaticky rozpoznat. Typicky se jedná o platby s chybným variabilním symbolem. Pokud zde svoji platbu najdete, pak kontaktujte hospodáře sdružení pro její správné přiřazení.',
'variable_symbol' => 'Variabilní symbol slouží k jednoznačnému určení příchozí platby člena.',
);
);
freenetis/branches/testing/application/helpers/callback.php
else
echo '&nbsp';
}
/**
* Callback field for ip address. Leaves blank ip if needed.
* @author Jiri Svitak
......
static function ip_address_field($item, $name, $args = array())
{
$ip_address = (isset($args[0]) && $args[0]) ? $item->ip_address.'/'.$item->subnet_range : $item->ip_address;
if ($item->ip_address_id)
echo html::anchor(url_lang::base()."ip_addresses/show/$item->ip_address_id", $ip_address);
else if ($item->ip_address != '')
......
else if (!$item->ip_address_id)
echo '<span style="color: green">'.url_lang::lang('texts.Free').'</span>';
}
/**
* Callback for device type field.
* @author Jiri Svitak
......
*/
static function device_type_field($item, $name)
{
echo html::anchor(url_lang::base()."devices/show/$item->device_id", $item->type);
echo html::anchor(url_lang::base()."devices/show/$item->device_id", $item->type);
}
/**
* Price field prints green amount of price of device in case that device is already repaid. Otherwise price is red.
* @author Jiri Svitak
......
else
echo '&nbsp;';
}
/**
* Callback field for user name.
* @author Jiri Svitak
......
*/
static function user_field($item, $name)
{
echo html::anchor(url_lang::base()."users/show/$item->user_id", $item->user_name);
echo html::anchor(url_lang::base()."users/show/$item->user_id", $item->user_name);
}
/**
* Callback field for user login.
* @author Jiri Svitak
......
*/
static function user_login_field($item, $name)
{
echo html::anchor(url_lang::base()."users/show/$item->user_id", $item->user_login);
echo html::anchor(url_lang::base()."users/show/$item->user_id", $item->user_login);
}
/**
* Callback field for canceling redirection of one IP address on member's profile screen.
* @author Jiri Svitak
......
echo url_lang::lang('texts.Cancel').' ';
echo html::anchor(url_lang::base()."redirect/delete/$item->ip_address_id/$item->message_id/member", url_lang::lang('texts.one IP address'));
echo ' | ';
echo html::anchor(url_lang::base()."redirect/delete_from_member/$item->member_id/$item->message_id", url_lang::lang('texts.all ip addresses of member'));
echo html::anchor(url_lang::base()."redirect/delete_from_member/$item->member_id/$item->message_id", url_lang::lang('texts.all ip addresses of member'));
}
/**
......
self::member_field($item, $name, $args);
echo "</span>";
}
/**
* Callback function to print type of members address points
*
* @author Michal Kliment
* @param <type> $item
* @param <type> $name
*/
public static function address_point_member_field ($item, $name)
{
switch ($item->type)
{
// it's domicile of member
case 1:
echo url_lang::lang('texts.Domicile'). ' '.help::hint('address_point_member_domicile');
break;
// it's only connecting place of member, he has domicile on another address point
case 2:
echo url_lang::lang('texts.Connecting place'). ' '.help::hint('address_point_member_connecting_place');
break;
}
}
}
freenetis/branches/testing/application/models/members_domicile.php
<?php
/**
*
* @author Michal Kliment
* @copyright (c) 2011 Kliment Michal
* @license GNU GPLv3
* @license http://www.gnu.org/licenses/gpl.txt
*/
class Members_domicile_Model extends ORM
{
protected $belongs_to = array('address_point');
}
?>
freenetis/branches/testing/application/models/address_point.php
*/
function get_all_address_points($limit_from = 0, $limit_results = 50, $order_by = 'id', $order_by_direction = 'asc', $filter_values = array())
{
return $this->db->query("SELECT ap.id, s.street, ap.street_number, t.town, t.quarter, t.zip_code, CONCAT(X(ap.gps), ' ', Y(ap.gps)) AS gps, c.country_name
FROM address_points ap
LEFT JOIN countries c ON ap.country_id = c.id
LEFT JOIN streets s ON ap.street_id = s.id
LEFT JOIN towns t ON ap.town_id = t.id
ORDER BY $order_by $order_by_direction
LIMIT $limit_from, $limit_results");
return $this->db->query("
SELECT
ap.id,
s.street,
ap.street_number,
t.town, t.quarter,
t.zip_code,
CONCAT(X(ap.gps), ' ', Y(ap.gps)) AS gps,
c.country_name,
(SELECT count(id) AS member_count FROM members m WHERE address_point_id = ap.id) +
(SELECT count(id) AS device_count FROM devices d WHERE address_point_id = ap.id) +
(SELECT COUNT(id) AS members_domicile_count FROM members_domiciles WHERE address_point_id = ap.id) AS items_count
FROM address_points ap
LEFT JOIN countries c ON ap.country_id = c.id
LEFT JOIN streets s ON ap.street_id = s.id
LEFT JOIN towns t ON ap.town_id = t.id
ORDER BY $order_by $order_by_direction
LIMIT $limit_from, $limit_results
");
}
/**
* @author Michal Kliment
......
*/
function count_all_items_by_address_point_id($address_point_id)
{
$result = $this->db->query("SELECT (member_count+device_count)AS count FROM (SELECT count(id) AS member_count FROM members m
WHERE address_point_id = $address_point_id) AS a, (SELECT count(id) AS device_count FROM devices d
WHERE address_point_id = $address_point_id) AS b");
$result = $this->db->query("
SELECT (member_count+device_count+members_domicile_count) AS count FROM
(
SELECT count(id) AS member_count FROM members m WHERE address_point_id = ?
) AS a,
(
SELECT count(id) AS device_count FROM devices d WHERE address_point_id = ?
) AS b,
(
SELECT COUNT(id) AS members_domicile_count FROM members_domiciles WHERE address_point_id = ?
) AS c
", array($address_point_id, $address_point_id, $address_point_id));
return ($result && $result->current()) ? $result->current()->count: 0;
}
......
array($gpsx, $gpsy)
);
}
/**
* Returns all members on this address point
*
* @author Michal Kliment
* @return <type>
*/
public function get_all_members ()
{
return $this->db->query("
(SELECT m.id AS member_id, m.name AS member_name, IF(md.id IS NULL, 1,2) AS type FROM members m
LEFT JOIN members_domiciles md ON md.member_id = m.id
WHERE m.address_point_id = ?)
UNION
(SELECT m.id AS member_id, m.name AS member_name, 1 AS type FROM members_domiciles md
JOIN members m ON md.member_id = m.id
WHERE md.address_point_id = ?)
ORDER BY member_id
", $this->id, $this->id);
}
/**
* Returns all devices on this address point
*
* @author Michal Kliment
* @return <type>
*/
public function get_all_devices ()
{
return $this->db->query("
SELECT
d.id AS device_id, d.name AS device_name, u.id AS user_id, CONCAT(u.name,' ',u.surname) AS user_name, m.id AS member_id, m.name AS member_name
FROM devices d
JOIN users u ON d.user_id = u.id
JOIN members m ON u.member_id = m.id
WHERE d.address_point_id = ?
", array($this->id));
}
}
?>
freenetis/branches/testing/application/models/member.php
*/
class Member_Model extends ORM
{
protected $has_one = array('allowed_subnets_count', 'members_traffic');
protected $has_one = array('allowed_subnets_count', 'members_traffic','members_domicile');
protected $has_many = array('allowed_subnets', 'invoices', 'users', 'accounts', 'transfers', 'bank_accounts', 'membership_interrupts');
protected $belongs_to = array('address_point','user');
......
'comment' => array('type' => 'string', 'column_name' => 'm.comment'),
'street_number' => array('type' => 'number')
);
public function __construct($id = false)
{
parent::__construct($id);
}
/**
* Function gets list of all members from database.
* Function gets list of all members from database.
* @param $limit_from starting row
* @param $limit_results number of rows
* @param $order_by sorting column
......
LEFT JOIN towns t ON ap.town_id = t.id
$where
")->current()->total;
}
}
/**
* Function gets member for registration table.
* @param $limit
......
ORDER BY name ASC
LIMIT $limit, $limit_results");
}
/**
* Function gets all members to export.
* @author Jiri Svitak
......
LEFT JOIN enum_types e ON m.type = e.id
LEFT JOIN (SELECT * FROM translations WHERE lang = '".Config::get('lang')."') f ON e.value = f.original_term");
}
/**
* Function gets all members who have at least one ip address in given subnet.
* @author Jiri Svitak
......
WHERE ip.subnet_id = $subnet_id
");
}
/**
* Function gets member to show or edit.
* @param $id
......
return $this->db->select(
array('members.registration', 'members.name as namem', 'members.address_point_id',
'members.variable_symbola',
'members.type as typem', 'members.organization_identifier', 'members.qos_ceil', 'members.qos_rate',
'members.type as typem', 'members.organization_identifier', 'members.qos_ceil', 'members.qos_rate',
'members.entrance_fee', 'members.debt_payment_rate',
'members.entrance_date', 'members.comment', 'members.locked',
'enum_types.value as member_type',
'enum_types.value as member_type',
'users.id', 'users.member_id',
'users.name', 'middle_name', 'surname',
'pre_title', 'post_title',
'users.name', 'middle_name', 'surname',
'pre_title', 'post_title',
'login', 'users.type', 'birthday', 'leaving_date','users.application_password','users.comment as ucomment',
'members_traffics.upload', 'members_traffics.download', 'members_traffics.active',
'SUM(members_traffics_daily.upload) as total_upload',
......
->join('members_traffics_daily', 'members_traffics_daily.member_id', 'members.id', 'LEFT')
->where('members.id=' . intval($id) . ' AND users.id IS NOT NULL')->groupby('members.id')->limit(1)->get();
}
/**
* @param $phone - string containing a phone number
* @return first member_id of a member with given phone number
......
public function find_member_id_by_phone($phone) {
/*
$q="(SELECT member_id FROM users WHERE phone='$phone')
UNION
(SELECT users.member_id FROM 'contacts'
JOIN enum_types ON contacts.type=enum_types.id
AND enum_types.value='phone' AND contacts.value='$phone'
JOIN users ON users.id=contacts.user_id)
UNION
(SELECT users.member_id FROM 'contacts'
JOIN enum_types ON contacts.type=enum_types.id
AND enum_types.value='phone' AND contacts.value='$phone'
JOIN users ON users.id=contacts.user_id)
";
$query=$this->db->query($q);
return $query->current()->member_id;
......
/**
* @author Tomas Dulik, Ondřej Fibich
* @return unknown_type
*
*
*/
public function find_member_by_phone($phone) {
/*
public function find_member_by_phone($phone) {
/*
$q="(
SELECT members.*
FROM members
JOIN users ON members.id = users.member_id
AND users.phone = '$phone'
)
UNION
(
UNION
(
SELECT members.*
FROM members
JOIN users ON members.id = users.member_id
......
*/
/* Slower alternative:
$q='SELECT members.id FROM members
JOIN users ON members.id=users.member_id
WHERE REPLACE(phone," ", "") LIKE '%$phone%' LIMIT 1';
*/
$q='SELECT members.id FROM members
JOIN users ON members.id=users.member_id
WHERE REPLACE(phone," ", "") LIKE '%$phone%' LIMIT 1';
*/
return $this->db->query("
SELECT m.* FROM members m
JOIN users ON m.id = users.member_id
......
/**
* @author Tomas Dulik, using http://us3.php.net/manual/en/function.crc32.php#86628
* CRC-CCITT-16 algorithm for the polynomial 0x1021
*
* Tomas Dulik note: the algorithm is too nice to be true.
*
* Tomas Dulik note: the algorithm is too nice to be true.
* The values it computes differ from the values returned by other calculators, e.g.
* http://zorc.breitbandkatze.de/crc.html
* @todo: rewrite this function for a proper implementation!!!
*
*
* This function can be used for generating the payments variable symbol from member id.
* crc16 can check error bursts up to 16bits long, so if the member mistypes such
* a generated variable symbol, almost any possible error should be detected.
* @param $data - 16bit integer for which crc16 should be computed
* @return 16bit int value containing crc16
*/
public function crc16($data) {
$crc = 0xFFFF;
public function crc16($data) {
$crc = 0xFFFF;
for ($i = 0; $i < 2; $i++) {
$x = (($crc >> 8) ^ $data) & 0xFF;
$data=$data >> 8;
......
}
return $crc;
}
/**
* @author Tomas Dulik
* @author Tomas Dulik
* This function can be used for generating variable symbols from member id
* @param $member_id
* @return string containing concatenation of member_id and 5 digits of its crc16
......
$member_id=(int)substr($vs, 0, $vs_len-5);
$crc=$this->crc16($member_id);
$vs_crc=(int)substr($vs, $vs_len-5, 5);
if ($crc==$vs_crc)
if ($crc==$vs_crc)
$member=$this->find($member_id);
}
return $this;
......
LEFT JOIN transfers t ON t.origin_id = q2.aid
GROUP BY q2.aid
) q3
SET m.redirect = m.redirect | 4
SET m.redirect = m.redirect | 4
WHERE m.id = q3.mid AND $low_amount < (q3.inbound - q3.outbound) AND (q3.inbound - q3.outbound) < $high_amount
");
}
/**
* Function sets debtor redirection to members who have their current credit is negative.
* @author Jiri Svitak
......
LEFT JOIN transfers t ON t.origin_id = q2.aid
GROUP BY q2.aid
) q3
SET m.redirect = m.redirect | 2
SET m.redirect = m.redirect | 2
WHERE m.id = q3.mid AND (q3.inbound - q3.outbound) < 0
");
");
}
/**
* Function sets membership interrupt redirection to all members who interrupted their membership.
* @author Jiri Svitak
......
JOIN members_fees mf ON mi.members_fee_id = mf.id
WHERE mf.activation_date <= CURDATE() AND CURDATE() <= mf.deactivation_date
) mi
SET m.redirect = m.redirect | 1
WHERE m.id = mi.mid
");
SET m.redirect = m.redirect | 1
WHERE m.id = mi.mid
");
}
/**
* Function sets optional message to all members.
* @author Jiri Svitak
......
// setting redirection
$this->db->query("UPDATE members SET redirect = redirect | 8;");
}
/**
* Function cancels redirection of given number.
* @author Jiri Svitak
......
}
}
?>
?>
freenetis/branches/testing/application/controllers/towns.php
$query = $town_model->get_all_towns($sql_offset, (int)$limit_results, $order_by, $order_by_direction);
// it creates grid to view all address points
$grid = new Grid(url_lang::base().'address_points', url_lang::lang('texts.List of all towns'), array(
$grid = new Grid(url_lang::base().'address_points', '', array(
//'separator' => '<br />-----------',
//'use_paginator' => false,
//'use_selector' => false,
......
// 'filter' => $filter->view
));
$grid->add_new_button(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
$grid->add_new_button(url_lang::base().'towns', url_lang::lang('texts.Towns'));
$grid->add_new_button(url_lang::base().'streets', url_lang::lang('texts.Streets'));
if ($this->acl_check_new('Address_points_Controller', 'town'))
$grid->add_new_button(url_lang::base().'towns/add', url_lang::lang('texts.Add new town'));
......
$grid->datasource($query);
$links = array();
$links[] = html::anchor(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
$links[] = url_lang::lang('texts.Towns');
$links[] = html::anchor(url_lang::base().'streets', url_lang::lang('texts.Streets'));
$view = new View('main');
$view->breadcrumbs = url_lang::lang('texts.Towns');
$view->title = url_lang::lang('texts.List of all towns');
$view->content = new View('show_all');
$view->content->headline = '';
$view->content->submenu = implode(' | ',$links);
$view->content->headline = url_lang::lang('texts.List of all towns');
$view->content->table = $grid;
$view->render(TRUE);
}
......
if (!$this->acl_check_view('Address_points_Controller', 'town'))
Controller::error(ACCESS);
$name = $town->town;
$name .= ($town->quarter != '') ? ' - '.$town->quarter : '';
$name .= ', '.$town->zip_code;
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = $this->acl_check_view('Address_points_Controller','town') ? html::anchor (url_lang::base().'towns/show_all', url_lang::lang('texts.Towns')) : url_lang::lang('texts.Towns');
$breadcrumbs[] = $name;
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Town detail');
$view->content = new View('towns_show');
$view->content->town = $town;
......
// access control
if (!$this->acl_check_new('Address_points_Controller','town'))
Controller::error(ACCESS);
// creates new form
$form = new Forge(url::base().url::current(TRUE), '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
......
url::redirect(url_lang::base().'towns/show_all');
}
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = $this->acl_check_view('Address_points_Controller','town') ? html::anchor (url_lang::base().'towns/show_all', url_lang::lang('texts.Towns')) : url_lang::lang('texts.Towns');
$breadcrumbs[] = url_lang::lang('texts.Add new town');
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Add new town');
$view->content = new View('form');
$view->content->headline = url_lang::lang('texts.Add new town');
$view->content->link_back = html::anchor(url_lang::base().'towns/show_all',url_lang::lang('texts.Back to list of all towns'));
//$view->content->link_back = html::anchor(url_lang::base().'towns/show_all',url_lang::lang('texts.Back to list of all towns'));
$view->content->form = $form->html();
$view->render(TRUE);
}
......
url::redirect(url_lang::base().'towns/show_all');
}
$name = $town->town;
$name .= ($town->quarter != '') ? ' - '.$town->quarter : '';
$name .= ', '.$town->zip_code;
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = ($this->acl_check_view('Address_points_Controller','town')) ? html::anchor (url_lang::base().'towns/show_all', url_lang::lang('texts.Towns')) : url_lang::lang('texts.Towns');
$breadcrumbs[] = ($this->acl_check_view('Address_points_Controller','town')) ? html::anchor (url_lang::base().'towns/show/'.$town->id, $name) : $name;
$breadcrumbs[] = url_lang::lang('texts.Edit');
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Edit town');
$view->content = new View('form');
$view->content->headline = url_lang::lang('texts.Editing of town');
$view->content->link_back = html::anchor(url_lang::base().'towns/show_all',url_lang::lang('texts.Back to list of all towns'));
//$view->content->link_back = html::anchor(url_lang::base().'towns/show_all',url_lang::lang('texts.Back to list of all towns'));
$view->content->form = $form->html();
$view->render(TRUE);
}
freenetis/branches/testing/application/controllers/address_points.php
$limit_results = (int) $this->input->get('record_per_page');
// parameters control
$allowed_order_type = array('id', 'street', 'street_number', 'town', 'quarter', 'zip_code', 'gps');
$allowed_order_type = array('id', 'street', 'street_number', 'town', 'quarter', 'zip_code', 'gps', 'items_count');
if (!in_array(strtolower($order_by), $allowed_order_type))
$order_by = 'id';
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc')
......
$query = $address_point_model->get_all_address_points($sql_offset, (int)$limit_results, $order_by, $order_by_direction);
// it creates grid to view all address points
$grid = new Grid(url_lang::base().'address_points', url_lang::lang('texts.List of all address points'), array(
$grid = new Grid(url_lang::base().'address_points', '', array(
//'separator' => '<br />-----------',
//'use_paginator' => false,
//'use_selector' => false,
......
// 'filter' => $filter->view
));
$grid->add_new_button(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
$grid->add_new_button(url_lang::base().'towns', url_lang::lang('texts.Towns'));
$grid->add_new_button(url_lang::base().'streets', url_lang::lang('texts.Streets'));
$grid->add_new_button(url_lang::base().'address_points/add', url_lang::lang('texts.Add address point'));
$grid->order_field('id')->label('ID');
......
$grid->order_field('street_number')->label(url_lang::lang('texts.street number'));
$grid->order_field('town')->label(url_lang::lang('texts.town'));
$grid->order_field('quarter')->label(url_lang::lang('texts.quarter'));
$grid->order_field('zip_code')->label(url_lang::lang('texts.zip_code'));
$grid->order_field('zip_code')->label(url_lang::lang('texts.zip code'));
$grid->order_callback_field('gps')->label(url_lang::lang('texts.gps'))->callback('callback::gps_field');
$grid->order_field('items_count')->label(url_lang::lang('texts.Items count'));
if ($this->acl_check_view(get_class($this), 'address_point'))
$grid->action_field('id') ->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'address_points/show') ->action(url_lang::lang('texts.Show'));
if ($this->acl_check_edit(get_class($this), 'address_point'))
$grid->action_field('id') ->label(url_lang::lang('texts.Fill in')) ->url(url_lang::base().'address_points/edit') ->action(url_lang::lang('texts.Fill in'));
if ($this->acl_check_delete(get_class($this), 'address_point'))
$grid->action_field('id') ->label(url_lang::lang('texts.Delete')) ->url(url_lang::base().'address_points/delete') ->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.Do you want to delete this address point').'\');"');
$grid->action_field('id') ->label(url_lang::lang('texts.Delete')) ->url(url_lang::base().'address_points/delete') ->action(url_lang::lang('texts.Delete'))->class('delete_link');
$grid->datasource($query);
$links = array();
$links[] = url_lang::lang('texts.Address points');
$links[] = html::anchor(url_lang::base().'towns', url_lang::lang('texts.Towns'));
$links[] = html::anchor(url_lang::base().'streets', url_lang::lang('texts.Streets'));
$view = new View('main');
$view->breadcrumbs = url_lang::lang('texts.Address points');
$view->title = url_lang::lang('texts.List of all address points');
$view->content = new View('show_all');
$view->content->headline = '';
$view->content->submenu = implode(' | ',$links);
$view->content->headline = url_lang::lang('texts.List of all address points');
$view->content->table = $grid;
$view->render(TRUE);
}
......
*/
function show($address_point_id = NULL)
{
// bad parameter
if (!$address_point_id)
Controller::warning(PARAMETER);
$address_point = new Address_point_Model($address_point_id);
// address point doesn't exist
if (!$address_point->id)
Controller::error(RECORD);
// access control
if (!$this->acl_check_view(get_class($this), 'address_point'))
Controller::error(ACCESS);
......
$members = $member_model->where('address_point_id', $address_point->id)->find_all();
$count_members = count($members);
//echo count($address_point->members);
$gps = "";
if (! empty ($address_point->gps))
......
}
}
// finds all members on this address
$members = $address_point->get_all_members();
$members_grid = new Grid(url_lang::base().'members', null,array(
'separator' => '<br /><br />',
'use_paginator' => false,
'use_selector' => false,
'total_items' => count($members)
));
$members_grid->field('member_id')->label('ID');
$members_grid->callback_field('member_id')->label(url_lang::lang('texts.Member'))->callback('callback::member_field');
$members_grid->callback_field('type')->label(url_lang::lang('texts.Type'))->callback('callback::address_point_member_field');
$members_grid->datasource($members);
// finds all devices on this address
$devices = $address_point->get_all_devices();
$devices_grid = new Grid(url_lang::base().'devices', null,array(
'separator' => '<br /><br />',
'use_paginator' => false,
'use_selector' => false,
'total_items' => count($devices)
));
$devices_grid->field('device_id')->label('ID');
$devices_grid->callback_field('device_id')->label(url_lang::lang('texts.Device'))->callback('callback::device_field');
$devices_grid->callback_field('user_id')->label(url_lang::lang('texts.User'))->callback('callback::User_field');
$devices_grid->callback_field('member_id')->label(url_lang::lang('texts.Member'))->callback('callback::member_field');
$devices_grid->datasource($devices);
$name = $address_point->street->street;
$name .= ($address_point->street_number) ? ' '.$address_point->street_number : '';
$name .= ', '.$address_point->town->town;
$name .= ($address_point->town->quarter) ? ' - '.$address_point->town->quarter : '';
$name .= ', '.$address_point->town->zip_code;
$name .= ($address_point->country_id && $address_point->country_id != Settings::get('default_country')) ? ', '.$address_point->country->country_name : '';
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = ($this->acl_check_view(get_class($this), 'address_point')) ? html::anchor (url_lang::base().'address_points/show_all', url_lang::lang('texts.Address points')) : url_lang::lang('texts.Address points');
$breadcrumbs[] = $name;
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Address point detail');
$view->content = new View('address_points_show');
$view->content->address_point = $address_point;
$view->content->count_members = $count_members;
$view->content->members_grid = $members_grid;
$view->content->devices_grid = $devices_grid;
$view->content->gps = $gps;
$view->render(TRUE);
}
......
url::redirect(url_lang::base().'address_points/show_all');
}
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = ($this->acl_check_view(get_class($this), 'address_point')) ? html::anchor (url_lang::base().'address_points/show_all', url_lang::lang('texts.Address points')) : url_lang::lang('texts.Address points');
$breadcrumbs[] = url_lang::lang('texts.Add new');
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Edit address point');
$view->content = new View('form');
$view->content->headline = url_lang::lang('texts.Editing of address point');
$view->content->link_back = html::anchor(url_lang::base().'address_points/show_all',url_lang::lang('texts.Back to list of all address points'));
//$view->content->link_back = html::anchor(url_lang::base().'address_points/show_all',url_lang::lang('texts.Back to list of all address points'));
$view->content->form = $form->html();
$view->render(TRUE);
}
......
{
$form_data[$key] = htmlspecialchars($value);
}
$use_gps = !empty($form_data['gpsx']) && !empty($form_data['gpsy']);
$issaved = TRUE;
......
{
$gpsx = doubleval($form_data["gpsx"]);
$gpsy = doubleval($form_data["gpsy"]);
if (gps::is_valid_degrees_coordinate($form->gpsx->value))
{
$gpsx = gps::degrees2real($form->gpsx->value);
......
url::redirect(url_lang::base().'address_points/show_all');
}
$name = $address_point->street->street;
$name .= ($address_point->street_number) ? ' '.$address_point->street_number : '';
$name .= ', '.$address_point->town->town;
$name .= ($address_point->town->quarter) ? ' - '.$address_point->town->quarter : '';
$name .= ', '.$address_point->town->zip_code;
$name .= ($address_point->country_id && $address_point->country_id != Settings::get('default_country')) ? ', '.$address_point->country->country_name : '';
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = ($this->acl_check_view(get_class($this), 'address_point')) ? html::anchor (url_lang::base().'address_points/show_all', url_lang::lang('texts.Address points')) : url_lang::lang('texts.Address points');
$breadcrumbs[] = ($this->acl_check_view(get_class($this), 'address_point')) ? html::anchor (url_lang::base().'address_points/show/'.$address_point->id, $name) : $name;
$breadcrumbs[] = url_lang::lang('texts.Fill in GPS');
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Add address point');
$view->content = new View('form');
$view->content->headline = url_lang::lang('texts.Editing of address point');
$view->content->link_back = html::anchor(url_lang::base().'address_points/show_all',url_lang::lang('texts.Back to list of all address points'));
//$view->content->link_back = html::anchor(url_lang::base().'address_points/show_all',url_lang::lang('texts.Back to list of all address points'));
$view->content->form = $form->html();
$view->render(TRUE);
}
......
if (!$address_point->id)
Controller::error(RECORD);
$members = $address_point->members;
$devices = $address_point->devices;
if (count($members)==0)
{
if (count($devices)==0)
{
if ($address_point->delete())
$this->session->set_flash('message', url_lang::lang('texts.Address point has been successfully deleted.'));
else
$this->session->set_flash('message', url_lang::lang('texts.Error - cant delete address point.'));
}
else
$this->session->set_flash('message', url_lang::lang('texts.At least one device still has this address point.'));
}
if (!$address_point->count_all_items_by_address_point_id($address_point_id))
$this->session->set_flash('message', url_lang::lang('texts.Address point has been successfully deleted.'));
else
$this->session->set_flash('message', url_lang::lang('texts.At least one member still has this address point.'));
$this->session->set_flash('message', url_lang::lang('texts.At least one item still has this address point.'));
url::redirect(url_lang::base().'address_points/show_all');
}
}
?>
freenetis/branches/testing/application/controllers/streets.php
$query = $street_model->get_all_streets($sql_offset, (int)$limit_results, $order_by, $order_by_direction);
// it creates grid to view all address points
$grid = new Grid(url_lang::base().'streets', url_lang::lang('texts.List of all streets'), array(
$grid = new Grid(url_lang::base().'streets', '', array(
//'separator' => '<br />-----------',
//'use_paginator' => false,
//'use_selector' => false,
......
// 'filter' => $filter->view
));
$grid->add_new_button(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
$grid->add_new_button(url_lang::base().'towns', url_lang::lang('texts.Towns'));
$grid->add_new_button(url_lang::base().'streets', url_lang::lang('texts.Streets'));
if ($this->acl_check_new('Address_points_Controller', 'town'))
$grid->add_new_button(url_lang::base().'streets/add', url_lang::lang('texts.Add new street'));
......
$grid->datasource($query);
$links = array();
$links[] = html::anchor(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
$links[] = html::anchor(url_lang::base().'towns', url_lang::lang('texts.Towns'));
$links[] = url_lang::lang('texts.Streets');
$view = new View('main');
$view->breadcrumbs = url_lang::lang('texts.Streets');
$view->title = url_lang::lang('texts.List of all streets');
$view->content = new View('show_all');
$view->content->headline = '';
$view->content->submenu = implode(' | ',$links);
$view->content->headline = url_lang::lang('texts.List of all streets');
$view->content->table = $grid;
$view->render(TRUE);
}
......
if (!$this->acl_check_view('Address_points_Controller','street'))
Controller::error(ACCESS);
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = $this->acl_check_view('Address_points_Controller','street') ? html::anchor (url_lang::base().'streets/show_all', url_lang::lang('texts.Streets')) : url_lang::lang('texts.Streets');
$breadcrumbs[] = $street->street;
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Street detail');
$view->content = new View('streets_show');
$view->content->street = $street;
......
url::redirect(url_lang::base().'streets/show_all');
}
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = $this->acl_check_view('Address_points_Controller','street') ? html::anchor (url_lang::base().'streets/show_all', url_lang::lang('texts.Streets')) : url_lang::lang('texts.Streets');
$breadcrumbs[] = url_lang::lang('texts.Add new street');
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Add new street');
$view->content = new View('form');
$view->content->headline = url_lang::lang('texts.Add new street');
$view->content->link_back = html::anchor(url_lang::base().'streets/show_all',url_lang::lang('texts.Back to list of all streets'));
//$view->content->link_back = html::anchor(url_lang::base().'streets/show_all',url_lang::lang('texts.Back to list of all streets'));
$view->content->form = $form->html();
$view->render(TRUE);
}
......
url::redirect(url_lang::base().'streets/show_all');
}
// breadcrumbs navigation
$breadcrumbs = array();
$breadcrumbs[] = ($this->acl_check_view('Address_points_Controller','street')) ? html::anchor (url_lang::base().'streets/show_all', url_lang::lang('texts.Street')) : url_lang::lang('texts.Street');
$breadcrumbs[] = ($this->acl_check_view('Address_points_Controller','street')) ? html::anchor (url_lang::base().'streets/show/'.$street->id, $street->street) : $street->street;
$breadcrumbs[] = url_lang::lang('texts.Edit');
$view = new View('main');
$view->breadcrumbs = implode(' » ', $breadcrumbs);
$view->title = url_lang::lang('texts.Edit street');
$view->content = new View('form');
$view->content->headline = url_lang::lang('texts.Editing of street');
$view->content->link_back = html::anchor(url_lang::base().'streets/show_all',url_lang::lang('texts.Back to list of all streets'));
//$view->content->link_back = html::anchor(url_lang::base().'streets/show_all',url_lang::lang('texts.Back to list of all streets'));
$view->content->form = $form->html();
$view->render(TRUE);
}
freenetis/branches/testing/application/controllers/members.php
$order_by = 'id';
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc')
$order_by_direction = 'asc';
// types of members to filtering
// types of members to filtering
$enum_types = new Enum_type_Model();
$types = $enum_types->get_values(Enum_type_Model::$member_type_id);
$types[0] = url_lang::lang('texts.All');
......
new Table_Form_Item('select','type','Type', $types),
"tr",
new Table_Form_Item('text','street_number','Street number'),
"td",
"td",
new Table_Form_Item('submit','submit','Filter')
)
);
);
$arr_gets = array();
foreach ($this->input->get() as $key=>$value)
$arr_gets[] = $key.'='.$value;
$query_string = '?'.implode('&',$arr_gets);
// load members
$model_members = new Member_Model();
$model_members = new Member_Model();
$total_members = $model_members->count_all_members($filter->values());
if (($sql_offset = ($page - 1) * $limit_results) > $total_members)
$sql_offset = 0;
$sql_offset = 0;
$query = $model_members->get_all_members($sql_offset, (int)$limit_results, $order_by, $order_by_direction, $filter->values());
// it creates grid to view all members
$headline = url_lang::lang('texts.List of all members');
......
'limit_results' => $limit_results,
'query_string' => $query_string,
'filter' => $filter->view
));
));
// grid buttons
if ($this->acl_check_new(get_class($this), 'members'))
if ($this->acl_check_new(get_class($this), 'members'))
$grid->add_new_button(url_lang::base().'members/add', url_lang::lang('texts.Add new member'));
if ($this->acl_check_edit('Members_Controller', 'registration'))
$grid->add_new_button(url_lang::base().'members/registration', url_lang::lang('texts.Edit registrations'));
......
//$grid->add_new_button(url_lang::base().'members/xls_export', url_lang::lang('texts.Export to XLS'));
// csv export of members
$grid->add_new_button(url_lang::base().'export/csv/members', url_lang::lang('texts.Export to CSV (utf-8)'));
$grid->add_new_button(url_lang::base().'export/csv/members/windows-1250', url_lang::lang('texts.Export to CSV (windows-1250)'));
$grid->add_new_button(url_lang::base().'export/csv/members/windows-1250', url_lang::lang('texts.Export to CSV (windows-1250)'));
}
// database columns - some are commented out because of lack of space
$grid->order_field('id')->label('ID');
......
$view->content->headline = $headline;
$view->render(TRUE);
} // end of show_all function
/**
* Shows details of member.
* @param $member_id id of member to show
......
$b_account = $billing->get_account($member->id);
$voip_sip = new Voip_sip_Model();
$voip = $voip_sip->get_all_record_by_member_limited($member->id);
$voip_grid = new Grid(url_lang::base().'members', null, array(
'separator' => '<br /><br />',
'use_paginator' => false,
......
'order_by_direction' => $order_by_direction,
'variables' => $member_id.'/'
));
$voip_grid->field('id')->label('ID');
$voip_grid->field('name')->label(url_lang::lang('texts.Number'));
$voip_grid->action_field('user_id')->label(url_lang::lang('texts.Account'))->url(url_lang::base().'voip/show')->action(url_lang::lang('texts.Show'));
$voip_grid->action_field('user_id')->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/show')->action(url_lang::lang('texts.Show'));
$voip_grid->datasource($voip);
if ($has_driver && ($b_account != null))
{
$voip_grid->add_new_button(url_lang::base().'voip_calls/show_by_member/'.$member->id, url_lang::lang('texts.List of all calls'));
......
// contacts of main user of member
$contacts = $contact_model->find_all_users_contacts($user->id);
$contact_types = array();
foreach($contacts as $i => $contact)
$contact_types[$i] = $enum_type_model->get_value($contact->type);
......
'use_paginator' => false,
'use_selector' => false,
));
if ($this->acl_check_new('Users_Controller','users') || ($this->session->get('user_type') == User_Model::$member && $this->acl_check_new('Users_Controller','users',$member->id)))
$users_grid->add_new_button(url_lang::base().'users/add/'.$member->id, url_lang::lang('texts.Add new user'));
$users_grid->field('id')->label('ID');
$users_grid->field('name')->label(url_lang::lang('texts.Name'));
$users_grid->field('surname')->label(url_lang::lang('texts.Surname'));
$users_grid->field('login')->label(url_lang::lang('texts.Username'));
if($this->acl_check_view('Users_Controller','users',$member_id))
$users_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_delete('Users_Controller','users',$member_id))
$users_grid->action_field('id') ->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/delete')->action(url_lang::lang('texts.Delete'))->class('delete_link');
if ($this->acl_check_view('Devices_Controller', 'devices', $member_id))
$users_grid->action_field('id') ->label(url_lang::lang('texts.Devices'))->url(url_lang::base().'devices/show_by_user')->action(url_lang::lang('texts.Show'));
if ($this->acl_check_edit('Users_Controller', 'work', $member_id))
$users_grid->action_field('id') ->label(url_lang::lang('texts.Works'))->url(url_lang::base().'works/show_by_user')->action(url_lang::lang('texts.Show'));
$users_grid->datasource($users);
// membership interrupts
$membership_interrupts = ORM::factory('membership_interrupt')->get_all_by_member($member_id);
$membership_interrupts_grid = new Grid(url_lang::base().'members', null, array(
......
'use_paginator' => false,
'use_selector' => false,
));
if ($this->acl_check_new(get_class($this), 'membership_interrupts', $member_id))
$membership_interrupts_grid->add_new_button(url_lang::base().'membership_interrupts/add/'.$member_id, url_lang::lang('texts.Add new interrupt of membership'));
......
$membership_interrupts_grid->field('from')->label(url_lang::lang('texts.Date from'));
$membership_interrupts_grid->field('to')->label(url_lang::lang('texts.Date to'));
$membership_interrupts_grid->field('comment')->label(url_lang::lang('texts.Comment'));
if ($this->acl_check_edit(get_class($this), 'membership_interrupts', $member_id))
$membership_interrupts_grid->action_field('id') ->label(url_lang::lang('texts.Membership interrupts'))->url(url_lang::base().'membership_interrupts/edit')->action(url_lang::lang('texts.Edit'));
......
$membership_interrupts_grid->action_field('id') ->label(url_lang::lang('texts.Membership interrupts'))->url(url_lang::base().'membership_interrupts/delete')->action(url_lang::lang('texts.Delete'))->class('delete_link');
$membership_interrupts_grid->datasource($membership_interrupts);
/************************************************************** BUILDING OF LINKS ****************************************************************************/
$member_links = array();
......
// user's works link
if ($member->id != 1 && $this->acl_check_view('Users_Controller', 'work', $member->id))
$user_links[] = html::anchor(url_lang::base().'works/show_by_user/'.$user->id, url_lang::lang('texts.Show works'));
if ($member->type != $former_type_id)
{
// change password link
......
} // end of show function
/**
* Gets expiration date of member's payments.
* @author Michal Kliment
......
// finds min and max date = due to prevent before unending loop
$min_fee_date = $fee_model->get_min_fromdate_fee_by_type ('regular member fee');
$max_fee_date = $fee_model->get_max_todate_fee_by_type ('regular member fee');
while (true)
{
$date = date::create(15, $month, $year);
......
$payment_left -= $payment;
}
}
/**
* Function adds new member to database. Creates user of type member assigned to this member.
* @return unknown_type
......
// cannot add former member
unset($types[$enum_types->get_type_id('Former member')]);
// regular member by default
$type_id = $enum_types->get_type_id('Regular member');
$type_id = $enum_types->get_type_id('Regular member');
// entrance fee
$fee_model = new Fee_Model();
$fee = $fee_model->get_by_date_type(date('Y-m-d'), 'entrance fee');
......
->options($types)->rules('required')->selected($type_id);
$form->input('membername')->label(url_lang::lang('texts.Name of organization').':&nbsp;'.help::hint('member_name'))->rules('length[1,60]');
$form->input('organization_identifier')->label(url_lang::lang('texts.Organization identifier').':')->rules('length[3,20]');
$form->group('')->label(url_lang::lang('texts.Login data'));
$form->input('login')->label(url_lang::lang('texts.username').':')
->rules('required|length[5,20]')
->callback(array($this, 'valid_username'));
->callback(array($this, 'valid_username'));
$form->password('password')->label(url_lang::lang('texts.Password').':&nbsp;'.help::hint('password'))->rules('required|length[3,50]')->class('password');
$form->password('confirm_password')->label(url_lang::lang('texts.confirm password').':')->rules('required|length[3,50]')->matches($form->password);
$form->group('')->label(url_lang::lang('texts.Address'));
$form->group('')->label(url_lang::lang('texts.Address of connecting place'));
$form->dropdown('street_id')->label(url_lang::lang('texts.street').':')->rules('required')->options($arr_streets)->add_button('streets');
$form->input('street_number')->label(url_lang::lang('texts.street number').':')->rules('required|length[1,50]|valid_numeric');
$form->dropdown('town_id')->label(url_lang::lang('texts.town').':')->rules('required')->options($arr_towns)->add_button('towns');
$form->group('')->label(url_lang::lang('texts.Address of domicile'));
$form->checkbox('use_domicile')->label(url_lang::lang('texts.Address of connecting place is different than address of domicile'));
$form->dropdown('domicile_street_id')->label(url_lang::lang('texts.street').':')->options($arr_streets)->add_button('streets');
$form->input('domicile_street_number')->label(url_lang::lang('texts.street number').':')->rules('length[1,50]|valid_numeric')->callback(array($this, 'valid_docimile_street_number'));
$form->dropdown('domicile_town_id')->label(url_lang::lang('texts.town').':')->options($arr_towns)->add_button('towns');
$form->group('')->label(url_lang::lang('texts.Contact information'));
$form->dropdown('phone_prefix')->label(url_lang::lang('texts.Telephone prefix').':')->rules('required')->options($phone_prefixes)->selected(Settings::get('default_country'));
$form->input('phone')->label(url_lang::lang('texts.phone').':')->rules('required|length[9,40]')->callback(array($this, 'valid_phone'));
$form->input('email')->label(url_lang::lang('texts.email').':')
->rules('length[3,50]|valid_email')
->callback(array($this, 'valid_email'));
$form->group('')->label(url_lang::lang('texts.Account information'));
$form->input('variable_symbol')->label(url_lang::lang('texts.Variable symbol').':&nbsp;'.help::hint('variable_symbol'))->rules('required|length[9,10]')->callback(array($this, 'valid_var_sym'));
$form->input('entrance_fee')->label(url_lang::lang('texts.Entrance fee').':&nbsp;'.help::hint('entrance_fee'))->rules('valid_numeric')->value($entrance_fee);
......
if (!$address_point->save())
throw new Exception();
}
$member->address_point_id = $address_point->id;
$account->account_attribute_id = Account_attribute_Model::$credit;
if ($form_data['membername'] == '')
$account->name = $form_data['surname'].' '.$form_data['name'];
......
$member->name = $form_data['name'].' '.$form_data['surname'];
else
$member->name = $form_data['membername'];
$member->address_point_id = $address_point->id;
$member->type = $form_data['type'];
$member->organization_identifier = $form_data['organization_identifier'];
$member->organization_identifier = $form_data['organization_identifier'];
$member->qos_ceil = $form_data['qos_ceil'];
$member->qos_rate = $form_data['qos_rate'];
$member->entrance_fee = $form_data['entrance_fee'];
$member->debt_payment_rate = $form_data['debt_payment_rate'];
// saving member
$member->save_throwable();
// saving user
// saving user
$user->member_id = $member->id;
$user->save_throwable();
// telephone
......
$contact->add($user);
$contact->save_throwable();
}
// saving account
// saving account
$account->member_id = $member->id;
$account->save_throwable();
......
$allowed_subnets_count->count = Settings::get('allowed_subnets_default_count');
$allowed_subnets_count->save();
// address of connecting place is different than address of domicile
if ($form_data['use_domicile'])
{
$address_point = $address_point_model->get_address_point($form_data['domicile_town_id'],$form_data['domicile_street_id'],$form_data['domicile_street_number']);
// address point doesn't exist exist, create it
if (!$address_point || !$address_point->id)
{
$address_point->clear();
$address_point->town_id = $form_data['domicile_town_id'];
$address_point->street_id = $form_data['domicile_street_id'];
$address_point->street_number = $form_data['domicile_street_number'];
$address_point->gps = '';
if (!$address_point->save())
throw new Exception();
}
// test if address of connecting place is really different than address of domicile
if ($member->address_point_id != $address_point->id)
{
$members_domicile = new Members_domicile_Model();
$members_domicile->member_id = $member->id;
$members_domicile->address_point_id = $address_point->id;
if (!$members_domicile->save())
throw new Exception ();
}
}
// insert regular member access rights
Controller::insert_phpgacl($user->id,$user->surname.' '.$user->name,$user->login, $form_data['type']);
unset($form_data);
......
}
catch (Exception $e)
{
// rollback transaction
$member->transaction_rollback();
$this->session->set_flash('message', url_lang::lang('texts.Error - cant add new member.'));
......
//$view->content->link_back = html::anchor(url_lang::base().'members/show_all/',url_lang::lang('texts.Back to list of members'));
$view->render(TRUE);
}
} // end of add function
/**
* Form for editing member.
* @param $member_id id of member to edit
......
// bad parameter
if (!isset($member_id) || !is_numeric ($member_id))
Controller::warning(PARAMETER);
$member = new Member_Model($member_id);
// member doesn't exist
......
Controller::error(ACCESS);
$this->member_id = $member->id;
// streets
$street_model = new Street_Model();
$streets = $street_model->find_all();
$arr_streets = array();
foreach ($streets as $street)
{
$arr_streets[$street->id] = $street->street;
}
asort($arr_streets, SORT_LOCALE_STRING);
// towns
$town_model = new Town_Model();
$towns = $town_model->find_all();
$arr_towns = array();
foreach ($towns as $town)
{
......
$arr_towns[$town->id] .= ', '.$town->zip_code;
}
asort($arr_towns, SORT_LOCALE_STRING);
// engineers
$user_model = new User_Model();
$member = new Member_Model($member_id);
......
asort($arr_engineers, SORT_LOCALE_STRING);
$allowed_subnets_count = ($member->allowed_subnets_count) ? $member->allowed_subnets_count->count : 0;
$form = new Forge(url_lang::base().'members/edit/'.$member->id, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Basic information'));
if ($this->acl_check_edit(get_class($this),'name',$member->id))
$form->input('membername')->label(url_lang::lang('texts.Member name').':')->rules('required|length[1,60]')->value($member->name);
......
if ($this->acl_check_edit('Members_Controller', 'var_sym', $member->id) && $member->id != 1)
$form->input('variable_symbol')->label(url_lang::lang('texts.Variable symbol').':&nbsp;'.help::hint('variable_symbol'))->rules('required|length[1,10]')->value($member->variable_symbol)->callback(array($this, 'valid_var_sym'));
$form->group('')->label(url_lang::lang('texts.Address'));
if ($this->acl_check_edit(get_class($this),'address',$member->id))
{
$form->group('')->label(url_lang::lang('texts.Address of connecting place'));
$form->dropdown('street_id')->label(url_lang::lang('texts.street').':')->rules('required')->options($arr_streets)->selected($member->address_point->street_id)->add_button('streets');
$form->input('street_number')->label(url_lang::lang('texts.street number').':')->rules('required|length[1,50]|valid_numeric')->value($member->address_point->street_number);
$form->dropdown('town_id')->label(url_lang::lang('texts.town').':')->rules('required')->options($arr_towns)->selected($member->address_point->town_id)->add_button('towns');
$form->group('')->label(url_lang::lang('texts.Address of domicile'));
$form->checkbox('use_domicile')->label(url_lang::lang('texts.Address of connecting place is different than address of domicile'))->checked((bool) $member->members_domicile->id);
$form->dropdown('domicile_street_id')->label(url_lang::lang('texts.street').':')->options($arr_streets)->selected($member->members_domicile->address_point->street_id)->add_button('streets');
$form->input('domicile_street_number')->label(url_lang::lang('texts.street number').':')->rules('length[1,50]|valid_numeric')->value($member->members_domicile->address_point->street_number)->callback(array($this, 'valid_docimile_street_number'));
$form->dropdown('domicile_town_id')->label(url_lang::lang('texts.town').':')->options($arr_towns)->selected($member->members_domicile->address_point->town_id)->add_button('towns');
}
$form->group('')->label(url_lang::lang('texts.Account information'));
if ($this->acl_check_edit(get_class($this),'en_fee',$member->id))
$form->input('entrance_fee')->label(url_lang::lang('texts.Entrance fee').':&nbsp;'.help::hint('entrance_fee'))->rules('valid_numeric')->value($member->entrance_fee);
if ($this->acl_check_edit(get_class($this),'debit',$member->id))
$form->input('debt_payment_rate')->label(url_lang::lang('texts.Monthly instalment of entrance').':&nbsp;'.help::hint('entrance_fee_instalment'))->rules('valid_numeric')->value($member->debt_payment_rate);
// additional information
$form->group('')->label(url_lang::lang('texts.Additional information'));
if ($this->acl_check_edit(get_class($this),'qos_ceil',$member->id))
......
$form->dropdown('user_id')->label(url_lang::lang('texts.Added by'))->options($arr_engineers)->selected($member->user_id);
if ($this->acl_check_edit(get_class($this),'comment',$member->id))
$form->textarea('comment')->label(url_lang::lang('texts.Comment').':')->rules('length[0,250]')->value($member->comment);
$form->submit('submit')->value(url_lang::lang('texts.Edit'));
special::required_forge_style($form, ' *', 'required');
... Rozdílový soubor je zkrácen, protože jeho délka přesahuje max. limit.

Také k dispozici: Unified diff