Пример #1
0
 public static function OrderPkg($pkgid)
 {
     $xtpl = self::$xtpl;
     $product = Package::getInstance();
     $products = $product->GetOrderable();
     if (count($products) < 1) {
     } else {
         for ($i = 0; $i < count($products); $i++) {
             if ($products[$i]['id'] == $pkgid) {
                 $xtpl->assign('DEFAULT', 'selected="selected"');
             } else {
                 $xtpl->assign('DEFAULT', '');
             }
             $xtpl->assign('PKGR', $products[$i]);
             $xtpl->parse('main.orderpkg.pkgrow');
         }
     }
     if ($pkgdata = $product->FetchData($pkgid)) {
         $xtpl->assign('PKG', $pkgdata);
         switch ($pkgdata['paytype']) {
             case 'Free':
                 $xtpl->assign('PRICE', 'Free');
                 $xtpl->assign('CYCLEDISABLED', "disabled");
                 break;
             case 'Onetime':
                 $xtpl->assign('PRICE', $pkgdata['price']);
                 $xtpl->assign('CYCLEDISABLED', "disabled");
             case 'Recurring':
                 $xtpl->assign('PRICE', $pkgdata['price']);
                 break;
         }
         $xtpl->parse('main.orderpkg.pkgorder');
     } else {
         $xtpl->assign('ID', $pkgid);
         $xtpl->parse('main.orderpkg.pkginfo');
     }
     $xtpl->parse('main.orderpkg');
     $xtpl->parse('main');
     $xtpl->out('main');
 }
Пример #2
0
 public function generateLastInv($orderid = '')
 {
     $time = Time::getInstance();
     $inv = Invoice::getInstance();
     $pkg = Package::getInstance();
     $setting = Settings::getInstance();
     if (!is_numeric($orderid) && !is_numeric($this->orderid)) {
         $result = array();
         $days = $time->add_date($time->UtoM(time()), $setting->Get('system.cron.daystonewinv'));
         $this->raw = $this->db->fetch_all_array('SELECT * FROM `Order` WHERE `status` = "Active" AND `nextdue` < "' . $days . '" AND `cycle` > 0');
         for ($i = 0; $i < count($this->raw); $i++) {
             $invdata = $inv->FetchData($this->raw[$i]['lastinv']);
             if ($time->MtoU($invdata['datedue']) < $time->MtoU($this->raw[$i]['nextdue'])) {
                 //new invoice should be generated
                 $pkgdata = $pkg->FetchData($this->raw[$i]['productid']);
                 $nextdue = $time->add_date($this->raw[$i]['nextdue'], '', $this->raw[$i]['cycle']);
                 $comment = "Order for package " . $pkgdata['name'] . " (" . $this->raw[$i]['nextdue'] . " - " . $nextdue . ")";
                 $lastinv = $inv->Create($this->raw[$i]['accountid'], $this->raw[$i]['id'], $this->raw[$i]['recuramount'], $this->raw[$i]['nextdue'], 'Unpaid', $comment);
                 $result[] = array('invoice' => $lastinv, 'order' => $this->raw[$i]['id']);
                 $this->Update('lastinv', $lastinv, $this->raw[$i]['id']);
             }
         }
         return $result;
     } else {
         if (!is_numeric($orderid)) {
             $orderid = $this->orderid;
         }
         $orderdata = $this->FetchData($orderid);
         $lastinvdata = $inv->FetchData($orderdata['lastinv']);
         if ($orderdata['status'] == 'Active' && $orderdata['cycle'] > 0 && $time->MtoU($orderdata['nextdue']) > $time->MtoU($lastinvdata['datedue'])) {
             $pkgdata = $pkg->FetchData($orderdata['productid']);
             $nextdue = $time->add_date($orderdata['nextdue'], '', $orderdata['cycle']);
             $comment = "Order for package " . $pkgdata['name'] . " (" . $orderdata['nextdue'] . " - " . $nextdue . ")";
             $lastinv = $inv->Create($orderdata['accountid'], $orderdata['id'], $orderdata['recuramount'], $orderdata['nextdue'], '', $comment);
             $this->Update($orderdata['id'], 'lastinv', $lastinv);
         }
     }
 }
Пример #3
0
 public function Create($orderid)
 {
     $order = Order::getInstance();
     $sm = ServerModule::getInstance();
     $preset = Preset::getInstance();
     $order->orderid = $orderid;
     $orderdata = $order->FetchData($orderid);
     $pkg = Package::getInstance()->FetchData($orderdata['productid']);
     $preset->presetid = $pkg['presetid'];
     $sm->id = $order->FindModuleID();
     $presetdata = $preset->FetchData($preset->presetid);
     if (!is_array($orderdata['accessdata'])) {
         $orderdata['accessdata'] = serialize($this->FillCreateArray($sm->getArray('Create'), $orderdata['accountid']));
         $order->Update('accessdata', $orderdata['accessdata'], $orderid);
     }
     if (!is_numeric($orderdata['serverid']) || $orderdata['serverid'] == '-1') {
         $serverdata = $this->selectServerFromGroup($presetdata['groupid']);
         $order->Update('serverid', $serverdata['ServerID'], $orderid);
     } else {
         $server = Server::getInstance();
         $serverdata = $server->FetchData($orderdata['serverid']);
     }
     if (strlen($serverdata['accessdata']) < 5) {
         throw new Exception("Server #" . $orderdata['serverid'] . " is not configured");
     }
     return $sm->CreateService(unserialize($serverdata['accessdata']), unserialize($orderdata['accessdata']), $preset->getOptions());
 }
Пример #4
0
<?php

if (!Package::isLoaded('auth')) {
    throw new Exception('The package `default` requires the package `auth` to be enabled');
}
Router::addRoutes((array) Package::getInstance('default')->config()->getValues('routes'));
Пример #5
0
<?php

define('DIR_BASE', realpath(dirname(__FILE__) . '/..'));
define('DIR_CORE', DIR_BASE . '/core');
define('DIR_CACHE', DIR_BASE . '/cache');
define('DIR_PACKAGES', DIR_BASE . '/packages');
define('DIR_URI', substr(dirname($_SERVER['PHP_SELF']), 1));
require '../core/autoload.php';
require '../vendor/autoload.php';
use Whoops\Run;
use Whoops\Handler\PrettyPageHandler;
new AutoLoad();
if ((int) Config::getInstance()->getValues('default')->DEBUG) {
    error_reporting(-1);
    ini_set('display_errors', 1);
    $whoops = new Whoops\Run();
    $whoops->pushHandler(new Whoops\Handler\PrettyPageHandler());
    $whoops->register();
} else {
    error_reporting(0);
    ini_set('display_errors', 0);
}
foreach ((array) Config::getInstance()->getValues('package') as $package) {
    Package::getInstance($package)->execute($package);
}
if (!($response = Router::forge(Tools::getValue('route'))->execute()->response())) {
    $response = Router::forge('_404_')->execute()->response();
    header("HTTP/1.0 404 Not Found");
}
echo $response;
Пример #6
0
     $setting->Update('system.cron.daystosuspend', $_POST['daystosuspend']);
     $setting->Update('system.cron.daystoterminate', $_POST['daystoterminate']);
     Page::EditCron();
     break;
 case 'editpkg':
     $pkg = Package::getInstance();
     try {
         $pkg->BatchUpdate($_POST, $_POST['pkgid']);
     } catch (Exception $e) {
         Page::$messages[] = array('type' => 'attention', 'message' => 'Fatal error catched during update. Error dump: ' . nl2br($e));
         Page::message();
     }
     Page::EditPkg($_POST['pkgid']);
     break;
 case 'delpkg':
     $pkg = Package::getInstance();
     $order = Order::getInstance();
     if (!is_numeric($_REQUEST['pkgid'])) {
         throw new Exception("No package ID specified to delete");
     } elseif ($order->Calculate('', $_REQUEST['pkgid']) > 0) {
         Page::$messages[] = array('type' => 'attention', 'message' => 'You cannot remove this package because there are still existing orders for that package');
     } else {
         $pkg->Delete($_REQUEST['pkgid']);
         Page::$messages[] = array('type' => 'success', 'message' => 'Package successfully removed');
     }
     Page::Package();
     break;
 case 'delcustomer':
     if (!is_numeric($_REQUEST['userid']) && !isset($_REQUEST['username'])) {
         Page::$messages[] = array('type' => 'attention', 'message' => 'User ID is not set');
     } else {