Webylon 3.1 API Docs
  • Package
  • Class
  • Tree
  • Deprecated
  • Download
Version: current
  • 3.2
  • 3.1

Packages

  • auth
  • Booking
  • cart
    • shipping
    • steppedcheckout
  • Catalog
  • cms
    • assets
    • batchaction
    • batchactions
    • bulkloading
    • comments
    • content
    • core
    • export
    • newsletter
    • publishers
    • reports
    • security
    • tasks
  • Dashboard
  • DataObjectManager
  • event
  • faq
  • forms
    • actions
    • core
    • fields-basic
    • fields-dataless
    • fields-datetime
    • fields-files
    • fields-formatted
    • fields-formattedinput
    • fields-relational
    • fields-structural
    • transformations
    • validators
  • googlesitemaps
  • guestbook
  • installer
  • newsletter
  • None
  • photo
    • gallery
  • PHP
  • polls
  • recaptcha
  • sapphire
    • api
    • bulkloading
    • control
    • core
    • cron
    • dev
    • email
    • fields-formattedinput
    • filesystem
    • formatters
    • forms
    • i18n
    • integration
    • misc
    • model
    • parsers
    • search
    • security
    • tasks
    • testing
    • tools
    • validation
    • view
    • widgets
  • seo
    • open
      • graph
  • sfDateTimePlugin
  • spamprotection
  • stealth
    • captha
  • subsites
  • userform
    • pagetypes
  • userforms
  • webylon
  • widgets

Classes

  • Announcement_Controller
  • AnnouncementHolder_Controller
  • BookingAdminPage_Controller
  • BookingPage_Controller
  • Cart_Controller
  • CartPage_Controller
  • Catalog_Controller
  • CheckoutPage_Controller
  • ChequePayment_Handler
  • ContactsPage_Controller
  • ContentController
  • ContentNegotiator
  • Controller
  • DataObjectManager_Controller
  • DatePickerField_Controller
  • Director
  • DocPage_Controller
  • DocumentsPage_Controller
  • Event_Controller
  • EventHolder_Controller
  • FileDataObjectManager_Controller
  • FindCyrillic_Controller
  • HomePage_Controller
  • LastDoc_Controller
  • LiveCalendarWidget_Controller
  • MapObject_Controller
  • MapObjectGroup_Controller
  • MapPage_Controller
  • MediawebPage_Controller
  • ModelAsController
  • MultiUploadControls
  • NewsArchive
  • Orders1CExchange_Controller
  • Page_Controller
  • Payment_Handler
  • PhotoAlbumManager_Controller
  • Product_Controller
  • ProductSearchPage_Controller
  • ProfilePage_Controller
  • PublHolder_Controller
  • Publication_Controller
  • RatingExtension_Controller
  • RegistrationPage_Controller
  • RemoveOrphanedPagesTask
  • RequestHandler
  • Room_Controller
  • RoomCatalog_Controller
  • RootURLController
  • SapphireInfo
  • Search_Controller
  • Session
  • SimpleOrderPage_Controller
  • SiteMap_Controller
  • SpecialCatalog_Controller
  • SS_HTTPRequest
  • SS_HTTPResponse
  • StartCatalog_Controller
  • SubsitesSelectorPage_Controller
  • VideoBankPage_Controller

Interfaces

  • NestedController

Exceptions

  • SS_HTTPResponse_Exception
  1 <?php
  2 // Контроллер обработки запросов от Класс365
  3 // стандартная авторизация SS + отладка
  4 class Orders1CExchange_Controller extends ContentController implements PermissionProvider {
  5 
  6     static $debug = false;
  7 
  8     function providePermissions() {
  9         return array(
 10             'EXCHANGE_1C' => array(
 11                 'name' => _t('EXCHANGE_1C.EXCHANGE_1C_ORDERS', 'Export orders to 1C'),
 12                 'category' => _t('Permissions.PERMISSIONS_CATEGORY', 'Roles and access permissions'),
 13                 'help' => _t('EXCHANGE_1C.EXCHANGE_1C_ORDERS_HELP', 'Ability to export orders to 1C.'),
 14                 'sort' => 400
 15             )
 16         );
 17     }
 18     
 19     static function debug_log($data) {
 20         if (self::$debug) 
 21             file_put_contents(TEMP_FOLDER . '/1c.log', $data."\n", FILE_APPEND);
 22     }
 23 
 24     function init() {
 25         parent::init();
 26         HTTP::set_cache_age(0);
 27 
 28         self::debug_log(date("\n\n-------\nc"));
 29         self::debug_log('ip: ' . $_SERVER['REMOTE_ADDR']);
 30         self::debug_log('request: ' . $_SERVER['REQUEST_URI']);
 31 
 32         self::debug_log('checkAuth:');
 33         self::debug_log('cookie: ' . var_export($_COOKIE, true));
 34         self::debug_log('session: ' . var_export($_SESSION, true));
 35         self::debug_log('member: ' . Member::currentUserID());
 36 
 37         // если не авторизованы по сессии
 38         if (!Permission::check('EXCHANGE_1C')) {
 39             self::debug_log("Try HTTP auth with login: {$_SERVER[PHP_AUTH_USER]} pass: {$_SERVER[PHP_AUTH_PW]}");
 40             // HTTP авторизация 
 41             // либо возвращает $member либо умирает с кодом 401
 42             $member = BasicAuth::requireLogin('1C EXCHANGE', 'EXCHANGE_1C');
 43             if ($member === true) {
 44                 // cli mode or DB not ready
 45                 self::debug_log('cli mode');
 46             }
 47             else {
 48                 $member->logIn();
 49                 Session::save();
 50                 self::debug_log('access granted to: ' . Member::CurrentUserID() . " ({$member->Email})");
 51             }
 52         }
 53     }
 54 
 55     function index($request) {
 56         // тут уже авотризованы так или иначе
 57 
 58         $key = $request->requestVar('type') . '_' . $request->requestVar('mode');
 59         self::debug_log("run mode: $key");
 60 
 61         switch ($key) {
 62             case 'catalog_checkauth':
 63             case 'sale_checkauth':
 64                 echo "success\n" . session_name()."\n" . session_id() . "\n";
 65                 self::debug_log('sucess: '. session_name().':' . session_id());
 66                 break;
 67 
 68             case 'catalog_init':
 69             case 'sale_init':
 70                 $limit = 100000 * 1024;
 71                 echo "zip=no\nfile_limit={$limit}\n";
 72                 self::debug_log("init success");
 73                 break;
 74 
 75             case 'sale_query':
 76                 $exportClass = new Orders1CExchange();
 77                 $xml = $exportClass->exportOrders();
 78                 if ($xml) {
 79                     echo $xml;
 80                     self::debug_log("export success");
 81                 } else {
 82                     echo "failure\n";
 83                     self::debug_log("export empty");
 84                 }
 85                 break;
 86 
 87             case 'sale_success':
 88                 $exportClass = new Orders1CExchange();
 89                 $exportClass->setOrdersExported();
 90                 // FIXME проверить на ошибки импорта
 91                 echo "success\n";
 92                 self::debug_log("mark success");
 93                 break;
 94 
 95             case 'sale_file':
 96                 if (!$filename = basename($request->requestVar('filename'))) {
 97                     echo "failure\n";
 98                     self::debug_log('error: no filename');
 99                     break;
100                 }
101                 
102                 ini_set('max_execution_time', 1800);
103                 $dirname = TEMP_FOLDER . '/1c_exchange';
104                 if (!file_exists($dirname)) {
105                     mkdir($dirname); // FIXME проверить создало или нет
106                     chmod($dirname, 0775);
107                 }
108 
109                 $filePath = $dirname . '/' . $filename;
110                 file_put_contents($filePath, $request->getBody());
111                 if (file_exists($filePath)) {
112                     $exportClass = new Orders1CExchange();
113                     $exportClass->importOrders($filePath); 
114                     // FIXME проверить на ошибки импорта
115                     //unlink($filePath);
116                     echo "success\n";
117                     self::debug_log("import success");
118                 }
119                 else {
120                     echo "failure\n";
121                     self::debug_log("upload failure:" . $filePath);
122                 }
123                 break;
124 
125             default:
126                 echo "failure\nunsupported mode\n";
127                 self::debug_log('unsupported mode: ' . $key);
128         }
129     }
130 }
131 
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -
Webylon 3.1 API Docs API documentation generated by ApiGen 2.8.0