Разработка биллинга для Hot-Spot точек Wi-fi

Автор работы: Пользователь скрыл имя, 16 Июня 2014 в 20:02, дипломная работа

Краткое описание

Целью разработки является создание веб-сервиса для потенциальных рекламодателей, который поможет им расширять целевую аудиторию и платить за реальные и фактические просмотры их рекламы, так как бот–просмотры в данном случае практически исключены. Так же целью является увеличение количество точек WI-FI в определённом городе для удобства граждан и возможностью выйти в интернет бесплатно в любом публичном месте.
Актуальность проекта: Беспроводные локальные сети являются достаточно часто востребованной темой на сегодняшний день, ведь это не только самый лучший способ связать в единую сеть несколько разнотипных устройств, но и возможность осуществлять высокоскоростную передачу и приём данных, оставляя при этом устройствам свою мобильность.

Вложенные файлы: 1 файл

диплом.docx

— 578.40 Кб (Скачать файл)

$this->disableHelper('view');

return;

}

 

$data = $this->getRequest()->getParam('client', array());

 

$cleanData = Model_PS_Client_Form::getInstance()->cleanupData($data);

$Client->update($cleanData);

 

$vl = Model_PS_Client_Form::getInstance()->validateData($Client);

 

if(!empty($vl)) {

// выводим  ошибку обязательных полей

$errorFields = array();

$required = Array();

foreach($vl as $field=>$err) {

$errorFields[$field] = $field;

if($err == 'required') {

$required[] = Model_PS_Client_Form::getInstance()->getTitle($field);

}

}

Util_Addons_Messages::setData($errorFields, 'client_error_fields', 1);

$_SESSION['client_edit_profile'] = $cleanData;

 

if(count($required)>0) {

$msg = 'Следующие  поля обязательны к заполнению:';

$msg .= '<blockquote>';

Продолжение приложения Б

 

foreach($required as $text) {

$msg .= $text.'<br/>';

}

$msg .= '</blockquote>';

$this->msgErr($msg);

}

 

// выводим прочие ошибки

foreach($vl as $field=>$err) {

if($err != 'required') {

$this->msgErr($err);

}

}

} else {

try {

$Client->sendEmailOnChange(true);

if($Client->save()) {

$this->msgOk('Ваши  персональные данные успешно  сохранены.');

$this->redirect(array('action'=>'edit-client'));

return;

} else {

$_SESSION['client_edit_profile'] = $Client->toArray();

$this->msgErr('По  какой-то причине ваши персональные  данные не удалось сохранить.');

}

} catch(Exception $e) {

$this->msgErr($e->getMessage());

}

}

 

$this->redirect(array('action'=>'edit-client'));

}

 

 

 

/**

* Редактирование/создание клиента.

*/

public function registerAction() {

Продолжение приложения Б

 

if(!empty($_SESSION['uid']) && is_numeric($_SESSION['uid'])) {

$this->redirect('/clientarea.php');

return;

}

 

$data = (array)$this->getRequest()->getParam('client');

 

$Client = new Model_PS_Client();

$Client->update($data);

if(!empty($_SESSION['client_edit_profile']) && is_array($_SESSION['client_edit_profile'])) {

$Client->update($_SESSION['client_edit_profile']);

}

unset($_SESSION['client_edit_profile']);

 

if($Client['customerResidency']==1) {

$Client['country'] = 'KZ';

$Client['postalCountry'] = 'KZ';

}

 

$this->view->Client = $Client;

$formCode = $Client['customerType'].$Client['customerResidency'];

$this->view->blockIds = Model_PS_Client_Form::getInstance()->getBlockList($formCode);

$this->view->errorFields = Util_Addons_Messages::getCurrentData('client_error_fields');

}

 

 

public function registerSaveAction() {

$Client = new Model_PS_Client();

 

$data = $this->getRequest()->getParam('client', array());

 

$cleanData = Model_PS_Client_Form::getInstance()->cleanupData($data);

$cleanData['password'] = $data['password'];

$cleanData['password2'] = $data['password2'];

 

$Client->update($cleanData);

 

Продолжение приложения Б

 

$vl = Model_PS_Client_Form::getInstance()->validateData($Client, array('required'=>Array('password', 'password2')));

 

if(!empty($vl)) {

$_SESSION['client_edit_profile'] = $cleanData;

 

// выводим  ошибку обязательных полей

$errorFields = array();

$required = Array();

foreach($vl as $field=>$err) {

$errorFields[$field] = $field;

if($err == 'required') {

$required[] = Model_PS_Client_Form::getInstance()->getTitle($field);

}

}

Util_Addons_Messages::setData($errorFields, 'client_error_fields', 1);

 

if(count($required)>0) {

$msg = 'Следующие  поля обязательны к заполнению:';

$msg .= '<blockquote>';

foreach($required as $text) {

$msg .= $text.'<br/>';

}

$msg .= '</blockquote>';

$this->msgErr($msg);

}

 

// выводим прочие ошибки

foreach($vl as $field=>$err) {

if($err != 'required') {

$this->msgErr($err);

}

}

} else {

if(!empty($Client['customerType']) && !empty($Client['customerResidency'])) {

try {

$Client->sendEmailOnChange(true);

if($Client->save()) {

Продолжение приложения Б

 

$this->msgOk('Вы  успешно зарегистрированы.');

$registerOk = true;

 

// регаем  клиента в партнёрке

if(!empty($_COOKIE['PSAFFID']) && is_numeric($_COOKIE['PSAFFID']) && $_SERVER['REMOTE_ADDR']!='195.93.152.1') {

$Invited = Model_PS_Affiliate_Invited::createInvited($Client->getId(), true);

$Invited->setPartnerId($_COOKIE['PSAFFID']);

$Invited->setActive(1);

$Invited->save();

}

 

// заводим  клиенту контакт в казнике

try {

Model_Kaznic_Shell::setConfigFromWHMCS();

$contact = Model_Kaznic_ContactManipulator::createFromWHMCS($Client->getId());

if($contact) {

$contact->save();

}

} catch(Exception $e) {

}

} else {

$_SESSION['client_edit_profile'] = $Client->toArray();

$this->msgErr('По  какой-то причине ваши данные  не удалось сохранить.');

}

} catch(Exception $e) {

$msg = $e->getMessage();

$msg = preg_replace('/Email (.+) already registred/i', 'Извините, электронный адрес $1 уже зарегистрирован в учетной системе сайта.<br/>Укажите другой e-mail', $msg);

$this->msgErr($msg);

 

$_SESSION['client_edit_profile'] = $cleanData;

}

Продолжение приложения Б

 

} else {

$this->msgErr('Для  регистрации необходимо выбрать  Тип клиента и Признак резидентства.');

}

}

 

if(empty($registerOk)) {

$this->redirect(array('action'=>'register', 'id'=>$Client->getId()));

} else {

// автологин

Model_PS_ClientManipulator::autoLogin($Client);

 

if(!empty($_SESSION['redirectAfterClientRegisterOrSave'])) {

// редиректим куда попросили

$redirect = $_SESSION['redirectAfterClientRegisterOrSave'];

unset($_SESSION['redirectAfterClientRegisterOrSave']);

$this->redirect($redirect);

} else {

$this->redirect('/clientarea.php');

}

}

}

 

 

/**

* тестовый  метод для вывода select'а мульти-аккаунтов

 */

public function changeClientAction() {

   

    echo '<form id="changeForm" action="'. $this->view->url(array('action'=>'redirect-client')) .'" method="post">';

    echo '<select id="changeSelect" name="id">';

    $Client = Model_PS_Client::getInstance($this->getUserId());

    foreach(Model_PS_Client::getManipulator()->findAll(array('parentUserId'=>$Client->getParentUserId())) as $row) {

        $selected = ($this->getUserId() == $row->getId()) ? 'selected' : '';

        echo '<option value="'. $row->getId() .'"'. $selected .'>'. $row->getFirstname() . ' ' . $row->getLastname() .'</option>';

    }

Продолжение приложения Б

  

 echo '</select>';

    echo '</form>';

       

    echo '<script type="text/javascript" src="includes/jscript/jquery.js"></script>';

    echo '<script>$("#changeSelect").change(function(){ $("#changeForm").submit(); });</script>';

    exit;

}

 

 

/**

* Перелогинивает мульти-аккаунты

*/

public function redirectClientAction() {

    $currentUserId  = $this->getUserId();

    $redirectUserId = $this->getRequest()->getParam("id");

   

    $CurClient = Model_PS_Client::getInstance($currentUserId);

    $RedClient = Model_PS_Client::getInstance($redirectUserId);

   

    if ($CurClient && $RedClient && $CurClient->getParentUserId()*1 > 0 && $CurClient->getParentUserId() == $RedClient->getParentUserId()) {

        if (Model_PS_ClientManipulator::autoLogin($RedClient)) {

                unset($_SESSION['htmlMultiClientForm']);

            $this->redirect("/clientarea.php");

        }

    } else {

        $this->msgErr('В доступе отказано.');

            $this->redirect($_SERVER['HTTP_REFERER']);

    }

   

}

 

 

public function fileUploadAction() {

    if (filesize($_FILES['clientFile']['tmp_name']) > 10000000) {

        $this->msgErr('Превышен максимальный размер загружаемого файла');

        $this->redirect($this->view->url(array('action'=>'file-list')));

    }

 

Продолжение приложения Б

 

  $uploaddir = PS_CLIENT_FILES_DIR . $this->getUserId() . '/';

    if (!is_dir($uploaddir)) {

        mkdir($uploaddir);

    }

   

    $filename = str_replace(' ', '_', strtolower(Util_Misc::translit($_FILES['clientFile']['name'])));

    $translitFilename = date('Y-m-d') . '_' . rand(10000, 99999) . '_' . $filename;

    $uploadfile = $uploaddir . $translitFilename;

 

    if (move_uploaded_file($_FILES['clientFile']['tmp_name'], $uploadfile)) {

        $ClientFile = new Model_PS_ClientFile();

        $ClientFile->setFileName($_FILES['clientFile']['name']);

        $ClientFile->setPath($this->getUserId() . '/' . $translitFilename);

        $ClientFile->setUserId($this->getUserId());

        $ClientFile->setType($this->getRequest()->getParam('clientFileType'));

        if ($ClientFile->save()) {

             Util_DB::getInstance()->insert('tbltickets',

                        array(

                            'tid'=>rand(100000, 999999),

                         'did'=>1,

                            'name'=>'Client File',

                         'c'=>substr(md5(time()), 0, 8),

                         'date'=>date('Y-m-d H:i:s', time()),

                         'title'=>'Клиент загрузил новый файл',

                         'message'=>'<a href="addonmodules.php?module=ps_clients&userId=&action=file-client-edit&fileId='.$ClientFile->getId().'">файл</a>',

                         'status'=>'Open',

                         'urgency'=>'Medium',

                         'lastreply'=>date('Y-m-d H:i:s', time()),

                         'flag'=>0,

                         'clientunread'=>0,

                         'replyingadmin'=>0,

                        )

                );

            

Продолжение приложения Б

           

 $this->msgOk('Файл был успешно загружен');

        }

    } else {

        $this->msgErr('При загрузке файла возникла ошибка');

    }

 

    $this->redirect($this->view->url(array('action'=>'edit-client')));

}

 

 

public function fileDownloadAction() {

    $fileId = $this->getRequest()->getParam('fileId')*1;

    $load = $this->getRequest()->getParam('load');

    $ClientFile = Model_PS_ClientFile::getInstance($fileId);

 

    if ($ClientFile) {

        if ($ClientFile->getUserId() != $this->getUserId() && !$this->getAdminId()) {

            $this->msgErr('Доступ запрещён');

            $this->redirect($this->view->url(array('action'=>'edit-client')));

        }

        if(!$load && in_array(pathinfo($ClientFile->getFileName(), PATHINFO_EXTENSION), array('png', 'jpg', 'jpeg', 'gif'))) {

            echo '<img src="/modules/misc/client_files_get.php?id='.$ClientFile->getId().'" style="max-width:95%" />';

        } else {

             header ("Content-Disposition: attachment; filename=" . $ClientFile->getFileName());

             readfile(PS_CLIENT_FILES_DIR . $ClientFile->getPath());

        }

    }

   

    exit;

}

 

 

public function fileDeleteAction() {

    $fileId = $this->getRequest()->getParam('fileId')*1;

    $ClientFile = Model_PS_ClientFile::getInstance($fileId);

   

Продолжение приложения Б

 

  if ($ClientFile) {

        if ($ClientFile->getUserId() != $this->getUserId() && !$this->getAdminId()) {

            $this->msgErr('Доступ запрещён');

            $this->redirect($this->view->url(array('action'=>'edit-client')));

        }

       

        $ClientFile->setIsDelete(1);

        $ClientFile->save();

    }

   

    $this->msgOk('Файл был успешно удалён');

    $this->redirect($this->view->url(array('action'=>'edit-client')));

}

}

 

?>

 

 


Информация о работе Разработка биллинга для Hot-Spot точек Wi-fi