Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

LePaySys

Версия 1.0

Руководство программиста

Lepaysys

http://

*****@***com

2012 г.

Оглавление

Введение.......................................................................................................................................... 3

Описание системы .......................................................................................................................... 4

Структура каталогов........................................................................................................................... 5

Структура MVC.............................................................................................................................. 6

Модель ......................................................................................................................................... 6

Представление ............................................................................................................................. 6

Контроллеры ............................................................................................................................... 7

Плагины ....................................................................................................................................... 7

Пример добавления нового функционала..................................................................................... 8

Введение

LePaySys (light engine payment system)  — это простой и легкий движок для создания платежных систем и любых сервисов обмена (передачи) ценностей.

НЕ нашли? Не то? Что вы ищете?

Данное руководство поможет вам разобраться в системе Lepaysys для дальнейшего модифицирования или расширения функциональности.

Описание системы

Приложение реализовано с помощью библиотеки Zend Framework (http://framework. /) версии 1.11 и представляет собой типичную структуру Model-view-controller (MVC, «Модель-представление-контроллер») . Требования библиотеки обязывают использовать PHP версии не ниже PHP 5.2.4. Данное описание предполагает, что Вы знакомы с этой библиотекой и её базовыми компонентами.

Структура каталогов

application - Основной каталог приложения, содержащий все элементы MVC

-- configs - Файлы конфигурации

---- langs - Файлы перевода

-- controllers - Скрипты контроллеров

----form - Классы форм

----helper - Классы поощников действий

-- layouts - Каталог шаблонов

----scripts - Скрипты шаблонов

-- models - Классы моделей

-- plugin - Классы плагинов

-- resourses - Файлы переводов ошибок компонентов Zend Framework

-- viwes - Каталог представлений

----helpers - Помощники вида

----scripts - Скрипты вида

docs - Документация приложения

library - библиотека Zend Framework

public - корневой каталог сайта

Структура MVC

Модель

Модель состоит из нескольких сущностей, определенным образом взаимодействующих между собой. Каждой сущности соответсвует свой класс - расширение класса библиотеки Zend_Db_Table_Abstract, в каждом из которых определяются атрибуты, методы и взаимосвязи с другими сущностями. API по модели находиться в каталоге /docs.

Сущности модели

User - пользователи системы.

Object - условные валюты.

Commissions - комиссии перевода и конвертации валют.

Balance - кошельки - на каждого пользователя для каждой валюты в системе существует один кошелек.

Transaction - история всех операций.

Для некоторых сущностей созданны свои классы отельной записи, расширяющие фукционал класса библиотеки  Zend_Db_Table_Row_Abstract:

UserRow

ObjectRow

BalanceRow

TransactionRow

Представление

Отображаемые страницы формируются компонентом библиотеки Zend_View из шаблона и вида отдельной страницы. Шаблоны находяться в каталоге /layouts/scripts. install. phtml используется только при инсталяции. Основным рабочим шаблоном является default. phtml. В нем настраивается расположение блоков шапки, меню, контента и подвала. В шалоне используется вывод 2-х меню - врехнее горизонтальное и левое вертикальное. При необходимости одно из них можно отключить.

Виды страниц разделяются по папкам, соотвествущим своему контроллеру.

Почти в каждом из них используется компонент Zend_Transalate для отображения на соответсвующем языке. Настройка текста первода производиться в файлах папки /configs/lang. Каждому переводу соответвует свой файл в формате csv, который должен называться по имени используемого языка (например en. csv или ru. csv).

Некоторые небольшие шаблоны вынесены отдельно и вызываются из необхоимых скриптов вида. Находяться они в каталоге /views/scripts/. К ним относятся:

pagination_control. phtml - шаблон вывода листалки страниц

topMenu. phtml - шаблон вывода меню

userBalance. phtml - шаблон вывода кошельков пользователя

Помощники видов находятся в каталоге /views/helpers:

Message. php - используется для вывода сообщения

OrderLink. php - для вывода заголовка столбца таблицы, по которому можно производить сортировку

Контроллеры

Контроллеры находятся в каталоге /application/controllers.

IndexController. php - для отображения общедоступных страниц. В минимальном виде - форма авторизации в системе.

AccountController. php - для обычных пользователей системы.

ApanelController. php - для администратора системы.

ErrorController. php - для вывода сообщений об ошибках.

InstallController. php - для инсталляции системы.

Формы ввода данных на сайте инициализируются в контроллерах через классы-потомки класса Zend_Form. Все они находяться в каталоге /application/controllers/form.

В каталоге /application/controllers/helper находиться помощник действияControllerMessage. php. Он предназначен для хранения и вывода сообщений об операциях.

Плагины

В системе подключаются 2 плагина:

LangSelector. php - загрузка соответсвующих файлов перевода на локальный язык.

Auth. php - здесь с помощью компонента библиотеки Zend_Acl проходит настройка прав доступа к ресурсам и проверка на доступ пользователя к запрошенной странице. Соотвествие страниц и ресурсов описаны в файле  /application/Bootstrap. php в функции _initNavigation(). Ресурс соответсвует имени контроллера, поэтому и идентификация прав доступа определяется по запрошенному контрроллеру.

Пример добавления нового функционала

Допустим, потребовалось создать функционал администратору для массового перевода некоторого фиксированного количества средств на кошельки пользователей.

Поскольку эта возможность должна быть доступна только администратору, то мы открываем файл ApanelController. php и добавляем новый публичный метод, например prezentAction(), в нем должна происходить инициализация формы для запроса суммы перевода, обработка параметров запроса и настройка параметров вывода.

Для инициализации формы запроса нам потребуется создать класс этой формы в папке /application/controllers/form. Назовем  класс prezentForm расширяющий класс Zend_Form и сохраним это всё в файле prezentForm. php. В этом классе произведем настройку формы в функции init(), где опишем текстовыя поле для суммы перевода и кошелька администратора с которого необходимо выполнить перевод,  и одну кнопку. Например, это может быть выгладеть так:

class prezentForm extends Zend_Form {

  public function init() {
  $this->setMethod('post');
    $amount   = $this->createElement('text', 'amount', array ( 'label' => 'Amount', 'size' => 5 ));
    $purse = $this->createElement('text', 'purse', array ( 'label' => 'Purse of the addressee' ) );
    $this->addElement($amount)
    ->addElement($purse)
      ->addElement('submit', 'Set', array('label' => 'Set status', 'class'=>"submit", 'decorators' => array('ViewHelper') ) );
   }


 }

При создании элемента amount, мы указали в поле 'label' значение 'Amount' - это текст для отображения на странице. Если мы хотим, чтобы он переводился на русский язык, нам потребуется открыть файл /configs/lang/ru. csv и дописать в этом файле "Amount;Сумма".

Теперь вернемся к контроллеру. Обработка парамеров запроса с формы и настройка параметров вывода будет проходить аналогично другим методам. Остается написать только непосредственно сам массовый перевод.

Для начала нем необходимо найти идентификатор объекта (валюты) в которой осуществляется транзакция

      $tObject = new Object();
    $object = $tObject->findByPurse( $values['purse'] );

Затем выбрать всех пользователей системы, кроме администратора.

      $tUser = new User();
    $accounts = $tUser->getNoAdmin();

Перебрать их в цикле и осуществить перевод

      $tTransaction = new Transaction();
      foreach ($accounts as $account) {
        $tTransaction->transfer( array( 'mode' => 1,
          'user_id' => $user->user_id,
          'to_user_id' => $account->user_id,
          'object_id' => $object->object_id,
          'amount' => $values['amount'],
          'description' => "Премия",
          'commission' => 0 ) );
      }
 

Полный вид метода может выглядеть так

  public function prezentAction()
  {
     $tUser = new User();
     $user = Zend_Auth::getInstance()->getIdentity();
     $user = $tUser->find( $user->user_id )->current();
     $prezentForm = new prezentForm();
     $this->view->fPrezent = $prezentForm;
    if ( $this->getRequest()->isPost() && $prezentForm->isValid($this->getRequest()->getPost())) {
    $values = $prezentForm->getValues(); 
      $tObject = new Object();
      $object = $tObject->findByPurse( $values['purse'] );
      $accounts = $tUser->getNoAdmin();
      $tTransaction = new Transaction();
    try {
      foreach ($accounts as $account) {
        $tTransaction->transfer( array( 'mode' => 1,
          'user_id' => $user->user_id,
          'to_user_id' => $account->user_id,
          'object_id' => $object->object_id,
          'amount' => $values['amount'],
          'description' => "Премия",
          'commission' => 0 ) );
      }
         $this->view->message = $this->_helper->controllerMessage("VALID_OPERATION");
     } catch (Zend_Db_Adapter_Exception $e) {
         $this->view->message = $e->getMessage();
     }
  }
 

Теперь необходимо создать скрипт вида для данного метода. Надо войти в каталог /views/scripts/apanel. Содать файл prezent. phtml. В самом простейшем случае нам нужно вывести форму и сообщение, остальное зависит только от дизайна страницы.

<?= $this->fPrezent?>
<?= $this->message() ?>

$this->message() - это простой помощник вида, описанные выше, который выводит параметр message, установленный в методе контроллера.

Осталось описать данный метод в навигационном меню. Откроем файл /application/Bootstrap. php и добавим в массив $pages (левое вертикальное меню) следующие строки:

  array (
  'controller' => 'apanel',
  'action'  => 'prezent',
  'resource'  => 'apanel',
  'privilege'  => 'prezent',
  'label'  => 'Mass transaction',
  ),
 

Незабываем, что для перевода на русский язык 'Mass transaction' необходимо дописать перевод в файл /configs/lang/ru. csv.