Exemple #1
0
 /**
  * 头部
  */
 function function_header()
 {
     $ret = '<base href="' . kernel::base_url(1) . '"/>';
     $path = app::get('site')->res_url;
     $debug_css = defined('DEBUG_CSS') && constant('DEBUG_CSS');
     $debug_js = defined('DEBUG_JS') && constant('DEBUG_JS');
     $css_mini = $debug_css ? '' : '_mini';
     $cssver = kernel::single('base_component_ui')->getVer($debug_css);
     $jsver = kernel::single('base_component_ui')->getVer($debug_js);
     if (!defined("DONOTUSE_CSSFRAMEWORK") || !constant('DONOTUSE_CSSFRAMEWORK')) {
         $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/typical.css' . $cssver . '" />';
     }
     $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/widgets_edit.css' . $cssver . '" />';
     $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'site', 'pdir' => 'js_mini'));
     $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'b2c', 'pdir' => 'js_mini'));
     if ($debug_js) {
         $ret .= '<script src="' . $path . '/js/mootools.js?' . $jsver . '"></script>
         <script src="' . $path . '/js/moomore.js' . $jsver . '"></script>
         <script src="' . $path . '/js/jstools.js' . $jsver . '"></script>
         <script src="' . $path . '/js/switchable.js' . $jsver . '"></script>
         <script src="' . $path . '/js/dragdropplus.js' . $jsver . '"></script>
         <script src="' . $path . '/js/shopwidgets.js' . $jsver . '"></script>';
     } else {
         $ret .= '<script src="' . $path . '/js_mini/moo.min.js' . $jsver . '"></script>
         <script src="' . $path . '/js_mini/ui.min.js' . $jsver . '"></script>
         <script src="' . $path . '/js_mini/shopwidgets.min.js' . $jsver . '"></script>';
     }
     foreach (kernel::serviceList('site_theme_view_helper') as $service) {
         if (method_exists($service, 'function_header')) {
             $ret .= $service->function_header();
         }
     }
     return $ret;
 }
Exemple #2
0
 /**
  * 头部
  */
 function function_header()
 {
     $ret = '<base href="' . kernel::base_url(1) . '"/>';
     $path = app::get('site')->res_url;
     $css_min = defined('DEBUG_CSS') && constant('DEBUG_CSS') ? '' : '_min';
     $css_mini = $css_min ? '_mini' : '';
     $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_min . '/framework.css" type="text/css" />';
     $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/widgets_edit.css" type="text/css" />';
     $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'site'));
     if (defined('DEBUG_JS') && constant('DEBUG_JS')) {
         $ret .= '<script src="' . $path . '/js/mootools.js?' . time() . '"></script>
         <script src="' . $path . '/js/moomore.js?' . time() . '"></script>
         <script src="' . $path . '/js/jstools.js?' . time() . '"></script>
         <script src="' . $path . '/js/coms/switchable.js?' . time() . '"></script>
         <script src="' . $path . '/js/dragdropplus.js?' . time() . '"></script>
         <script src="' . $path . '/js/shopwidgets.js?' . time() . '"></script>';
     } else {
         $ret .= '<script src="' . $path . '/js_mini/moo_min.js"></script>
         <script src="' . $path . '/js_mini/switchable_min.js"></script>
         <script src="' . $path . '/js_mini/shopwidgets_min.js"></script>';
     }
     foreach (kernel::serviceList('site_theme_view_helper') as $service) {
         if (method_exists($service, 'function_header')) {
             $ret .= $service->function_header();
         }
     }
     return $ret;
 }
Exemple #3
0
 function dorecycle($mdl_name, $filter = null)
 {
     $oRecycle = app::get('desktop')->model('recycle');
     list($app_id, $table) = explode('_mdl_', $mdl_name);
     $o = app::get($app_id)->model($table);
     $recycle_item = array();
     $recycle_item['drop_time'] = time();
     $recycle_item['item_type'] = $o->table_name();
     $dbschema = $o->get_schema();
     $textColumn = $dbschema['textColumn'];
     $pkey = $dbschema['idColumn'];
     foreach ($dbschema['columns'] as $k => $col) {
         if ($col['is_title'] && $col['sdfpath']) {
             $textColumn = $col['sdfpath'];
             break;
         }
     }
     $rows = $o->getList('*', $filter, 0, -1);
     if (method_exists($o, 'pre_recycle')) {
         if (!$o->pre_recycle($rows)) {
             return false;
         }
     }
     $menus = app::get('desktop')->model('menus');
     $permission_id = $menus->permissionId($_GET);
     foreach ($rows as $k => $v) {
         $pkey_value = $v[$pkey];
         $v = $o->dump($v[$pkey], '*', 'delete');
         $recycle_item['item_sdf'] = $v;
         $recycle_item['app_key'] = $app_id;
         $recycle_item['item_title'] = $v[$textColumn];
         if (method_exists($o, 'title_recycle')) {
             $recycle_item['item_title'] = $o->title_recycle($v);
         }
         $tmp = $recycle_item;
         $tmp['permission'] = $permission_id;
         $return = $oRecycle->save($tmp);
         unset($tmp[$pkey]);
         $o->delete(array($pkey => $pkey_value));
         #↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓记录管理员操作日志@lujy↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
         if ($obj_operatorlogs = kernel::service('operatorlog.system')) {
             if (method_exists($obj_operatorlogs, 'dorecycle')) {
                 $obj_operatorlogs->dorecycle($v);
             }
         }
         #↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑记录管理员操作日志@lujy↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
     }
     if (method_exists($o, 'suf_recycle')) {
         if (!$o->suf_recycle($_POST)) {
             return false;
         }
     }
     $services = kernel::serviceList('desktop_finder_callback.' . get_class($o));
     foreach ($services as $service) {
         if (method_exists($service, 'recycle')) {
             $service->recycle($_POST);
         }
     }
     return true;
 }
Exemple #4
0
 public function pre_display(&$content)
 {
     foreach (kernel::serviceList('base_render_pre_display') as $service) {
         if (method_exists($service, 'pre_display')) {
             $service->pre_display($content);
         }
     }
 }
Exemple #5
0
    public static function exception_handler($exception)
    {
        foreach (kernel::serviceList('base_exception_handler') as $service) {
            if (method_exists($service, 'pre_display')) {
                $service->pre_display($content);
            }
        }
        $message = $exception->getMessage();
        $code = $exception->getCode();
        $file = $exception->getFile();
        $line = $exception->getLine();
        $trace = $exception->getTrace();
        $trace_message = $exception->getTraceAsString();
        $trace_message = null;
        $root_path = realpath(ROOT_DIR);
        $output = ob_end_clean();
        $position = str_replace($root_path, '&gt; &nbsp;', $file) . ':' . $line;
        $i = 0;
        foreach ($trace as $t) {
            if (!($t['class'] == 'kernel' && $t['function'] == 'exception_error_handler')) {
                $t['file'] = str_replace($root_path, 'ROOT:', $t['file']);
                $basename = basename($t['file']);
                if ($i == 0) {
                    $trace_message .= '<tr class="code" style="color:#000"><td><b>&gt;&nbsp;</b></td>';
                } else {
                    $trace_message .= '<tr class="code" style="color:#999"><td></td>';
                }
                if ($t['args']) {
                    $args_info = htmlspecialchars(implode(',', $t['args']));
                    if (trim($args_info)) {
                        $args = "<span class=\"lnk\" onclick=\"alert(this.nextSibling.innerHTML)\">...</span><span style='display:none'>{$args_info}</span>";
                    } else {
                        $args = "\"{$args_inf}\"";
                    }
                } else {
                    $args = '';
                }
                if ($t['line']) {
                    $trace_message .= "<td>#{$i}</td><td>{$t['class']}{$t['type']}{$t['function']}({$args})</td><td>{$basename}:{$t['line']}</td></tr>";
                } else {
                    $trace_message .= "<td>#{$i}</td><td>{$t['class']}{$t['type']}{$t['function']}({$args})</td><td>{$basename}</td></tr>";
                }
                $i++;
            }
        }
        $output = <<<EOF
        <p style="background:#eee;border:1px solid #ccc;padding:10px;margin:10px 0">{$message}</p>
        <div style="padding:10px 0;font-weight:bold;color:#000">{$position}</div>
        <table cellspacing="0" cellpadding='0' style="width:100%;">
        {$trace_message}
        </table>
EOF;
        self::output($output, 'Track');
    }
Exemple #6
0
 /** 
  * 重写getList方法
  */
 public function getList($cols = '*', $filter = array(), $offset = 0, $limit = -1, $orderType = null)
 {
     $arr_list = parent::getList($cols, $filter, $offset, $limit, $orderType);
     $obj_extends_order_service = kernel::serviceList('b2c.api_reship_extends_actions');
     if ($obj_extends_order_service) {
         foreach ($obj_extends_order_service as $obj) {
             $obj->extend_item_list($arr_list);
         }
     }
     return $arr_list;
 }
Exemple #7
0
 function main()
 {
     $this->controller->begin();
     $oRecycle = app::get('desktop')->model('recycle');
     $recycle_item = array();
     $recycle_item['drop_time'] = time();
     $recycle_item['item_type'] = $this->object->table_name();
     $o = $this->app->model($this->object->table_name());
     $this->dbschema = $this->object->get_schema();
     $textColumn = $this->dbschema['textColumn'];
     foreach ($this->dbschema['columns'] as $k => $col) {
         if ($col['is_title'] && $col['sdfpath']) {
             $textColumn = $col['sdfpath'];
             break;
         }
     }
     $pkey = $this->dbschema['idColumn'];
     $pkey_value = $_POST[$pkey];
     //explode('|',$_POST['_PKEY_']);
     $rows = $o->getList('*', array($pkey => $pkey_value), 0, -1);
     if (method_exists($o, 'pre_recycle')) {
         if (!$o->pre_recycle($rows)) {
             $this->controller->end(false, $o->recycle_msg ? $o->recycle_msg : '删除失败');
             return false;
         }
     }
     foreach ($rows as $k => $v) {
         $pkey_value = $v[$pkey];
         $v = $o->dump($v[$pkey], '*', 'delete');
         $recycle_item['item_sdf'] = $v;
         $recycle_item['app_key'] = $this->app->app_id;
         $recycle_item['item_title'] = $v[$textColumn];
         $tmp = $recycle_item;
         $return = $oRecycle->save($tmp);
         unset($tmp[$pkey]);
         $o->delete(array($pkey => $pkey_value));
     }
     if (method_exists($o, 'suf_recycle')) {
         if (!$o->suf_recycle($_POST)) {
             $this->controller->end(false, $o->recycle_msg ? $o->recycle_msg : '删除失败');
             return false;
         }
     }
     $services = kernel::serviceList('desktop_finder_callback.' . get_class($o));
     foreach ($services as $service) {
         if (method_exists($service, 'recycle')) {
             $service->recycle($_POST);
         }
     }
     $this->controller->end(true, '删除成功', 'javascript:finderGroup["' . $_GET['finder_id'] . '"].unselectAll();finderGroup["' . $_GET['finder_id'] . '"].refresh();');
 }
Exemple #8
0
 public function getList($cols = '*', $filter = array('status' => 'false'), $offset = 0, $limit = -1, $orderby = null)
 {
     $services = kernel::serviceList('passport');
     foreach ($services as $service) {
         if ($service instanceof pam_interface_passport) {
             $a_temp = $service->get_config();
             $item['passport_id'] = $a_temp['passport_id']['value'];
             $item['passport_name'] = $a_temp['passport_name']['value'];
             $item['passport_status'] = $a_temp['passport_status']['value'];
             $item['passport_version'] = $a_temp['passport_version']['value'];
             $ret[] = $item;
         }
     }
     return $ret;
 }
Exemple #9
0
 function function_header()
 {
     $ret = '<base href="' . kernel::base_url(1) . '"/>';
     $path = app::get('site')->res_full_url;
     $debug_css = defined('DEBUG_CSS') && constant('DEBUG_CSS');
     $debug_js = defined('DEBUG_JS') && constant('DEBUG_JS');
     $css_mini = $debug_css ? '' : '_mini';
     $cssver = kernel::single('base_component_ui')->getVer($debug_css);
     $jsver = kernel::single('base_component_ui')->getVer($debug_js);
     if (!defined("DONOTUSE_CSSFRAMEWORK") || !constant('DONOTUSE_CSSFRAMEWORK')) {
         $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/typical.css' . $cssver . '" />';
     }
     $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/widgets_edit.css' . $cssver . '" />';
     $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'site', 'pdir' => 'js_mini'));
     $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'b2c', 'pdir' => 'js_mini'));
     if ($debug_js) {
         $ret .= '<script src="' . $path . '/js/mootools.js' . $jsver . '"></script>
         <script src="' . $path . '/js/moomore.js' . $jsver . '"></script>
         <script src="' . $path . '/js/jstools.js' . $jsver . '"></script>
         <script src="' . $path . '/js/switchable.js' . $jsver . '"></script>
         <script src="' . $path . '/js/dragdropplus.js' . $jsver . '"></script>
         <script src="' . $path . '/js/widgetsinstance.js' . $jsver . '"></script>';
     } else {
         $ret .= '<script src="' . $path . '/js_mini/moo.min.js' . $jsver . '"></script>
         <script src="' . $path . '/js_mini/ui.min.js' . $jsver . '"></script>
         <script src="' . $path . '/js_mini/widgetsinstance.min.js' . $jsver . '"></script>';
     }
     if ($theme_info = app::get('site')->getConf('site.theme_' . app::get('site')->getConf('current_theme') . '_color')) {
         $theme_color_href = kernel::base_url(1) . '/themes/' . app::get('site')->getConf('current_theme') . '/' . $theme_info;
         $ret .= "<script>\n            window.addEvent('domready',function(){\n                new Element('link',{href:'" . $theme_color_href . "',type:'text/css',rel:'stylesheet'}).injectBottom(document.head);\n             });\n            </script>";
     }
     /*$ret .= '<script>
     					window.addEvent(\'domready\',function(){(parent.loadedPart[1])++});
                         parent.document.getElementById(\'loadpart\').style.display="none";
                         parent.document.getElementById(\'body\').style.display="block";
                     </script>';
     */
     foreach (kernel::serviceList('site_theme_view_helper') as $service) {
         if (method_exists($service, 'function_header')) {
             $ret .= $service->function_header();
         }
     }
     return $ret;
 }
Exemple #10
0
 /**
  * 每小时例行任务
  * @param null
  * @return null
  */
 public function analysis_hour()
 {
     $data = $this->fetch_by_interval('hour');
     foreach (kernel::serviceList('ectools_analyse_hour') as $service) {
         if (!$service instanceof ectools_analysis_interface) {
             continue;
         }
         $run_task = false;
         $service_name = get_class($service);
         $run_hour = strtotime(date("Y-m-d H", time() - 3600) . ':00:00');
         if (!isset($data[$service_name])) {
             $new_service = array('service' => $service_name, 'interval' => 'hour');
             if ($analysis_id = app::get('ectools')->model('analysis')->insert($new_service)) {
                 $run_task = true;
             }
         } elseif ($data[$service_name]['modify'] + 3600 <= $run_hour) {
             $run_hour = $data[$service_name]['modify'] + 3600;
             $run_task = true;
             $analysis_id = $data[$service_name]['id'];
             unset($data[$service_name]);
         } else {
             unset($data[$service_name]);
         }
         if ($run_task) {
             $rows = $service->get_logs($run_hour);
             if ($rows) {
                 foreach ($rows as $row) {
                     $logs = array();
                     $logs['analysis_id'] = $analysis_id;
                     $logs['type'] = $row['type'];
                     $logs['target'] = $row['target'];
                     $logs['flag'] = $row['flag'];
                     $logs['value'] = $row['value'];
                     $logs['time'] = $run_hour;
                     app::get('ectools')->model('analysis_logs')->insert($row);
                 }
             }
             app::get('ectools')->model('analysis')->update(array('modify' => $run_hour), array('id' => $analysis_id));
         }
     }
 }
Exemple #11
0
 function function_header()
 {
     $ret = '<base href="' . kernel::base_url(1) . '"/>';
     $path = app::get('site')->res_full_url;
     $debug_css = config::get('app.debug', false);
     $debug_js = config::get('app.debug', false);
     $css_mini = $debug_css ? '' : '.min';
     $cssver = view::ui()->getVer($debug_css);
     $jsver = view::ui()->getVer($debug_js);
     $ret .= '<link rel="stylesheet" href="' . $path . '/stylesheets/widgets_edit' . $css_mini . '.css' . $cssver . '" />';
     $ret .= view::ui()->lang_script(array('src' => 'lang.js', 'app' => 'site'));
     if ($debug_js) {
         $ret .= '<script src="' . $path . '/scripts/lib/mootools.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/lib/moomore.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/jstools.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/switchable.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/dragdropplus.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/widgetsinstance.js' . $jsver . '"></script>';
     } else {
         $ret .= '<script src="' . $path . '/scripts/lib/mootools.min.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/ui.min.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/widgetsinstance.min.js' . $jsver . '"></script>';
     }
     if ($theme_info = app::get('site')->getConf('site.theme_' . app::get('site')->getConf('current_theme') . '_color')) {
         $theme_color_href = kernel::base_url(1) . '/themes/' . app::get('site')->getConf('current_theme') . '/' . $theme_info;
         $ret .= "<script>\n            window.addEvent('domready',function(){\n                new Element('link',{href:'" . $theme_color_href . "',rel:'stylesheet'}).injectBottom(document.head);\n             });\n            </script>";
     }
     /*$ret .= '<script>
                         window.addEvent(\'domready\',function(){(parent.loadedPart[1])++});
                         parent.document.getElementById(\'loadpart\').style.display="none";
                         parent.document.getElementById(\'body\').style.display="block";
                     </script>';
     */
     foreach (kernel::serviceList('site_theme_view_helper') as $service) {
         if (method_exists($service, 'function_header')) {
             $ret .= $service->function_header();
         }
     }
     return $ret;
 }
Exemple #12
0
 function function_header()
 {
     $ret = '<base href="' . kernel::base_url(1) . '"/>';
     $path = app::get('site')->res_full_url;
     $css_mini = defined('DEBUG_CSS') && constant('DEBUG_CSS') ? '' : '_mini';
     $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/framework.css" type="text/css" />';
     $ret .= '<link rel="stylesheet" href="' . $path . '/css' . $css_mini . '/widgets_edit.css" type="text/css" />';
     $ret .= kernel::single('base_component_ui')->lang_script(array('src' => 'lang.js', 'app' => 'site'));
     if (defined('DEBUG_JS') && constant('DEBUG_JS')) {
         $ret .= '<script src="' . $path . '/js/mootools.js?' . time() . '"></script>
                 <script src="' . $path . '/js/moomore.js?' . time() . '"></script>
                 <script src="' . $path . '/js/jstools.js?' . time() . '"></script>
                 <script src="' . $path . '/js/coms/switchable.js?' . time() . '"></script>
                 <script src="' . $path . '/js/dragdropplus.js?' . time() . '"></script>
                 <script src="' . $path . '/js/shopwidgets.js?' . time() . '"></script>';
     } else {
         $ret .= '<script src="' . $path . '/js_mini/moo_min.js"></script>
             <script src="' . $path . '/js_mini/tools_min.js"></script>
             <script src="' . $path . '/js_mini/ui_min.js"></script>
             <script src="' . $path . '/js_mini/shopwidgets_min.js"></script>';
     }
     //$ret.='<script src="'.$path.'/js_mini/patch.js"></script>';
     if ($theme_info = app::get('site')->getConf('site.theme_' . app::get('site')->getConf('current_theme') . '_color')) {
         $theme_color_href = kernel::base_url(1) . '/themes/' . app::get('site')->getConf('current_theme') . '/' . $theme_info;
         $ret .= "<script>\n            window.addEvent('domready',function(){\n                new Element('link',{href:'" . $theme_color_href . "',type:'text/css',rel:'stylesheet'}).inject(document.head);\n             });\n            </script>";
     }
     /* $ret .= '<script>
                         window.addEvent(\'domready\',function(){(parent.loadedPart[1])++});
                         parent.document.getElementById(\'loadpart\').style.display="none";
                         parent.document.getElementById(\'body\').style.display="block";
                     </script>';
     */
     foreach (kernel::serviceList('site_theme_view_helper') as $service) {
         if (method_exists($service, 'function_header')) {
             $ret .= $service->function_header();
         }
     }
     return $ret;
 }
Exemple #13
0
 function __construct(&$app)
 {
     parent::__construct($app);
     if (@constant('WITHOUT_STRIP_HTML')) {
         $this->enable_strip_whitespace = false;
     }
     $this->app = $app;
     $this->_request = kernel::single('base_component_request');
     $this->_response = kernel::single('base_component_response');
     foreach (kernel::serviceList('site_controller_construct') as $service) {
         $service->prepare($this);
     }
     //构造时加载
     //finish modify controler-action html
     foreach (kernel::serviceList(sprintf('site_controller_content.%s.%s.%s', $this->_request->get_app_name(), $this->_request->get_ctl_name(), $this->_request->get_act_name())) as $class_name => $service) {
         if ($service instanceof site_interface_controller_content) {
             if (method_exists($service, 'modify')) {
                 $this->__finish_modifier[$class_name] = $service;
             }
             if (method_exists($service, 'boot')) {
                 $service->boot($this);
             }
         }
     }
 }
Exemple #14
0
 /**
  * 创建发货单
  * @params array - 订单数据
  * @params obj - 应用对象
  * @params string - 支付单生成的记录
  * @return boolean - 创建成功与否
  */
 public function generate($sdf, &$controller = null, &$msg = '')
 {
     /**
      * 发货之前的判断
      */
     $is_allow_delivery = true;
     $obj_before_delivery = kernel::servicelist('b2c.order.delivery.before');
     if ($obj_before_delivery) {
         foreach ($obj_before_delivery as $obj) {
             if (method_exists($obj, 'generate')) {
                 $is_allow_delivery = $obj->generate($sdf, $msg);
             }
         }
     }
     if (!$is_allow_delivery) {
         return false;
     }
     $manual = true;
     // 得到delivery的一些信息
     $sdf['delivery_id'] = $this->model->gen_id();
     $this->model->op_id = $controller->user->user_id;
     $this->model->op_name = $controller->user->user_data['name'];
     // 处理返货单据信息,得到订单的发送量。
     $order = $controller->app->model('orders');
     $odelivery = $controller->app->model('delivery');
     $subsdf = array('order_objects' => array('*', array('order_items' => array('*', array(':products' => '*')))));
     $sdf_order = $order->dump($sdf['order_id'], '*', $subsdf);
     $order_items = array();
     // 所有的goods type 处理的服务的初始化.
     $arr_service_goods_type_obj = array();
     $arr_service_goods_type = kernel::servicelist('order_goodstype_operation');
     foreach ($arr_service_goods_type as $obj_service_goods_type) {
         $goods_types = $obj_service_goods_type->get_goods_type();
         $arr_service_goods_type_obj[$goods_types] = $obj_service_goods_type;
     }
     $goods_item_type = '';
     $obj_order_item = $this->app->model('order_items');
     $is_process = true;
     $is_start = true;
     foreach ($sdf_order['order_objects'] as $k => $v) {
         if ($v['obj_type'] != 'goods' && $v['obj_type'] != 'gift') {
             $arr_goods = array();
             $arr_service_goods_type_obj[$v['obj_type']]->get_order_object($v, $arr_goods);
             foreach ($arr_goods as $arr) {
                 $sdf['extend_send'][$arr['item_id']] = floatval($sdf['extend_send'][$arr['item_id']]);
                 if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['extend_send'][$arr['item_id']]) && !$arr['floatstore']) {
                     $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存');
                     return false;
                 }
             }
             $arr_extends_keys = array_keys($sdf['extend_send']);
             foreach ($v['order_items'] as $arr_order_items) {
                 if ($arr_order_items['quantity'] == $arr_order_items['sendnum']) {
                     $is_process = true && $is_process;
                     $is_start = false;
                 } else {
                     if (in_array($arr_order_items['item_id'], $arr_extends_keys) && floatval($sdf['extend_send'][$arr_order_items['item_id']]) > 0) {
                         $is_process = true && $is_process;
                         $is_start = false;
                     } else {
                         $is_process = false;
                     }
                 }
             }
             if ($is_start) {
                 $extends_goods_status = 'delivery_start';
             } else {
                 if ($is_process) {
                     $extends_goods_status = 'delivery_finish';
                 } else {
                     $extends_goods_status = 'delivery_process';
                 }
             }
             foreach (kernel::servicelist('b2c.order_store_extends') as $object) {
                 if ($object->get_goods_type() != $v['obj_type']) {
                     continue;
                 }
                 $obj_extends_store = $object;
                 if ($obj_extends_store) {
                     $obj_extends_store->store_change($v, 'delivery', $extends_goods_status);
                 }
             }
         }
         foreach ($v['order_items'] as &$__arr_order_items) {
             $arr_goods = array();
             if ($__arr_order_items['item_type'] == 'product') {
                 $goods_item_type = 'goods';
             } else {
                 $goods_item_type = $__arr_order_items['item_type'];
             }
             if (!isset($__arr_order_items['products']) || !$__arr_order_items['products']) {
                 $arr_tmp = $obj_order_item->getList('*', array('item_id' => $__arr_order_items['item_id']));
                 if ($arr_tmp) {
                     $__arr_order_items['products']['product_id'] = $arr_tmp[0]['product_id'];
                     $__arr_order_items['products']['goods_id'] = $arr_tmp[0]['goods_id'];
                 }
             }
             $arr_service_goods_type_obj[$goods_item_type]->get_order_object($__arr_order_items['products'], $arr_goods);
             $__arr_order_items['floatstore'] = $arr_goods['type']['floatstore'];
             if ($sdf['send'] && array_key_exists($__arr_order_items['item_id'], $sdf['send'])) {
                 $sdf['send'][$__arr_order_items['item_id']] = floatval($sdf['send'][$__arr_order_items['item_id']]);
                 if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['send'][$__arr_order_items['item_id']]) && !$__arr_order_items['floatstore']) {
                     $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存');
                     return false;
                 }
             } else {
                 if ($sdf['gift_send'] && array_key_exists($__arr_order_items['item_id'], $sdf['gift_send'])) {
                     $sdf['gift_send'][$__arr_order_items['item_id']] = floatval($sdf['gift_send'][$__arr_order_items['item_id']]);
                     if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['gift_send'][$__arr_order_items['item_id']]) && !$__arr_order_items['floatstore']) {
                         $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存');
                         return false;
                     }
                 }
             }
         }
         $order_items = array_merge($order_items, $v['order_items']);
     }
     $this->objMath = kernel::single('ectools_math');
     if (isset($sdf['send']) || isset($sdf['gift_send']) || isset($sdf['extend_send'])) {
         if ($sdf['logi_id']) {
             //这里在php5.4兼容改造中修改过,可能会导致逻辑错误,以前为:
             //$oCorp = &$controller->app->model('dlycorp');//2014.5.16
             $oCorp = $controller->app->model('dlycorp');
             $aCorp = $oCorp->dump($sdf['logi_id'], '*');
         }
         $delivery = array('money' => $this->objMath->number_plus(array($sdf['money'], $sdf['cost_protect'])), 'is_protect' => $sdf['is_protect'], 'delivery' => $sdf['delivery'], 'delivery_id' => $sdf['delivery_id'], 'logi_id' => $sdf['logi_id'], 'logi_no' => $sdf['logi_no'], 'logi_name' => $aCorp['name'], 'ship_name' => $sdf['ship_name'], 'ship_area' => $sdf['ship_area'], 'ship_addr' => $sdf['ship_addr'], 'ship_zip' => $sdf['ship_zip'], 'ship_tel' => $sdf['ship_tel'], 'ship_mobile' => $sdf['ship_mobile'], 'ship_email' => $sdf['ship_email'], 'memo' => $sdf['memo']);
     } else {
         $delivery = array('money' => $this->objMath->number_plus(array($sdf_order['cost_freight'], $sdf_order['cost_protect'])), 'is_protect' => $sdf_order['shipping']['is_protect'], 'delivery' => $sdf_order['shipping']['method'], 'delivery_id' => $odelivery->gen_id(), 'logi_id' => '', 'logi_no' => $sdf['logi_no'], 'logi_name' => $sdf['logi_name'], 'ship_name' => $sdf_order['consignee']['name'], 'ship_area' => $sdf_order['consignee']['area'], 'ship_addr' => $sdf_order['consignee']['addr'], 'ship_zip' => $sdf_order['consignee']['zip'], 'ship_tel' => $sdf_order['consignee']['telephone'], 'ship_mobile' => $sdf_order['consignee']['mobile'], 'ship_email' => $sdf_order['consignee']['email']);
     }
     /**
      *    @function:    订单明细赋值,读取订单详细表sdb_order_items的addon字段
      *    @params:
      *        @$dinfo['addon']:        订单序列化字段,存放订单物品等资料
      *        @$delivery['op_name']:    订单操作人员
      *        @$aUpdate['ship_status']:订单发货状态 1为发货状态
      */
     $delivery['order_id'] = $sdf['order_id'];
     $delivery['member_id'] = $sdf_order['member_id'];
     $delivery['t_begin'] = time();
     $delivery['op_name'] = $sdf['opname'];
     $delivery['type'] = 'delivery';
     $delivery['status'] = 'progress';
     $delivery_id = $delivery['delivery_id'];
     //遍历订单明细
     $aBill = array();
     $nonGoods = 0;
     //是否完全发货商品标识
     if (!isset($sdf['send']) && !isset($sdf['gift_send']) && !isset($sdf['extend_send'])) {
         //非弹窗确认
         foreach ($order_items as $key => $dinfo) {
             if ($dinfo['item_type'] != 'gift') {
                 $dinfo['send'] = $dinfo['quantity'] - $dinfo['sendnum'];
             } else {
                 $dinfo['gift_send'] = $dinfo['quantity'] - $dinfo['sendnum'];
             }
             //须发送=未发送
             $order_items[$key] = $dinfo;
         }
     } else {
         //弹窗确认
         $is_all_send_none = true;
         if ($is_all_send_none && isset($sdf['send']) && $sdf['send']) {
             foreach ((array) $sdf['send'] as $arr_send) {
                 if ($arr_send > 0) {
                     $is_all_send_none = false;
                     break;
                 }
             }
         }
         if ($is_all_send_none && isset($sdf['gift_send']) && $sdf['gift_send']) {
             foreach ((array) $sdf['gift_send'] as $arr_send) {
                 if ($arr_send > 0) {
                     $is_all_send_none = false;
                     break;
                 }
             }
         }
         if ($is_all_send_none && isset($sdf['extend_send']) && $sdf['extend_send']) {
             foreach ((array) $sdf['extend_send'] as $arr_send) {
                 if ($arr_send > 0) {
                     $is_all_send_none = false;
                     break;
                 }
             }
         }
         if ($is_all_send_none) {
             $msg = app::get('b2c')->_('请输入发货数量!');
             return false;
         }
         foreach ($order_items as $key => $dinfo) {
             if ($dinfo['item_type'] == 'product' || $dinfo['item_type'] == 'adjunct') {
                 if (isset($sdf['send'][$dinfo['item_id']]) && floatval($sdf['send'][$dinfo['item_id']]) > 0) {
                     //弹窗并且输入了发货数量>=1
                     if (floatval($sdf['send'][$dinfo['item_id']]) > $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) {
                         $msg = app::get('b2c')->_("发货数量超过需要发货量!");
                         return false;
                     } elseif (floatval($sdf['send'][$dinfo['item_id']]) == $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) {
                         //足量发送
                         $dinfo['send'] = $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']));
                         //须发送=未发送
                     } else {
                         //部分发送
                         $dinfo['send'] = $this->objMath->number_minus(array(floatval($sdf['send'][$dinfo['item_id']]), 0));
                         $nonGoods = 1;
                     }
                 } else {
                     if (!is_null($sdf['send'][$dinfo['item_id']]) && $dinfo['sendnum'] != $dinfo['quantity']) {
                         $dinfo['send'] = 0;
                         $nonGoods = 1;
                     }
                 }
                 if (isset($sdf['extend_send'][$dinfo['item_id']]) && floatval($sdf['extend_send'][$dinfo['item_id']]) > 0) {
                     //弹窗并且输入了发货数量>=1
                     if (floatval($sdf['extend_send'][$dinfo['item_id']]) > $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) {
                         $msg = app::get('b2c')->_("发货数量超过需要发货量!");
                         return false;
                     } elseif (floatval($sdf['extend_send'][$dinfo['item_id']]) == $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) {
                         //足量发送
                         $dinfo['extend_send'] = $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']));
                         //须发送=未发送
                     } else {
                         //部分发送
                         $dinfo['extend_send'] = $this->objMath->number_minus(array(floatval($sdf['extend_send'][$dinfo['item_id']]), 0));
                         $nonGoods = 1;
                     }
                 } else {
                     if (!is_null($sdf['extend_send'][$dinfo['item_id']]) && $dinfo['sendnum'] != $dinfo['quantity']) {
                         $dinfo['extend_send'] = 0;
                         $nonGoods = 1;
                     }
                 }
             } else {
                 // 赠品发送过程...
                 if (isset($sdf['gift_send'][$dinfo['item_id']]) && floatval($sdf['gift_send'][$dinfo['item_id']]) > 0) {
                     //弹窗并且输入了发货数量>=1
                     if (floatval($sdf['gift_send'][$dinfo['item_id']]) > $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) {
                         $msg = app::get('b2c')->_("发货数量超过需要发货量!");
                         return false;
                     } elseif (floatval($sdf['gift_send'][$dinfo['item_id']]) == $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) {
                         //足量发送
                         $dinfo['gift_send'] = $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']));
                         //须发送=未发送
                     } else {
                         //部分发送
                         $dinfo['gift_send'] = $this->objMath->number_minus(array(floatval($sdf['gift_send'][$dinfo['item_id']]), 0));
                         $nonGoods = 1;
                     }
                 } else {
                     if (!is_null($sdf['gift_send'][$dinfo['item_id']]) && $dinfo['sendnum'] != $dinfo['quantity']) {
                         $dinfo['gift_send'] = 0;
                         $nonGoods = 1;
                     }
                 }
                 // 其他发送过程
                 if (isset($sdf['extend_send'][$dinfo['item_id']]) && floatval($sdf['extend_send'][$dinfo['item_id']]) > 0) {
                     //弹窗并且输入了发货数量>=1
                     if (floatval($sdf['extend_send'][$dinfo['item_id']]) > $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) {
                         $msg = app::get('b2c')->_("发货数量超过需要发货量!");
                         return false;
                     } elseif (floatval($sdf['extend_send'][$dinfo['item_id']]) == $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']))) {
                         //足量发送
                         $dinfo['extend_send'] = $this->objMath->number_minus(array($dinfo['quantity'], $dinfo['sendnum']));
                         //须发送=未发送
                     } else {
                         //部分发送
                         $dinfo['extend_send'] = $this->objMath->number_minus(array(floatval($sdf['extend_send'][$dinfo['item_id']]), 0));
                         $nonGoods = 1;
                     }
                 } else {
                     if (!is_null($sdf['extend_send'][$dinfo['item_id']]) && $dinfo['sendnum'] != $dinfo['quantity']) {
                         $dinfo['extend_send'] = 0;
                         $nonGoods = 1;
                     }
                 }
             }
             $order_items[$key] = $dinfo;
         }
     }
     if ($order_items) {
         //实体商品
         $arr_items = array();
         if ($manual || !$manual && $this->app->getConf('system.auto_delivery_physical') != 'no') {
             if (!$manual) {
                 $delivery['status'] = $this->app->getConf('system.auto_delivery_physical') == 'yes' ? 'progress' : 'ready';
             }
             $iLoop = 0;
             foreach ($order_items as $dinfo) {
                 if ($dinfo['send']) {
                     $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $sdf['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['item_type'] == 'product' ? 'goods' : $dinfo['item_type'], 'goods_id' => $dinfo['goods_id'], 'product_id' => $dinfo['products']['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => isset($dinfo['addon']['adjname']) && $dinfo['addon']['adjname'] ? $dinfo['name'] . $dinfo['addon']['adjname'] : $dinfo['name'], 'number' => $dinfo['send']);
                     $items[] = $dinfo;
                     $arr_items[] = array('number' => $dinfo['send'], 'name' => $dinfo['name']);
                     $this->toInsertItem($item);
                     $iLoop++;
                 }
                 if ($dinfo['gift_send']) {
                     $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $sdf['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['item_type'] == 'product' ? 'goods' : $dinfo['item_type'], 'goods_id' => $dinfo['goods_id'], 'product_id' => $dinfo['products']['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'], 'number' => $dinfo['gift_send']);
                     $items[] = $dinfo;
                     $arr_items[] = array('number' => $dinfo['gift_send'], 'name' => $dinfo['name']);
                     $this->toInsertItem($item);
                     $iLoop++;
                 }
                 if ($dinfo['extend_send']) {
                     $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $sdf['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['item_type'] == 'product' ? 'goods' : $dinfo['item_type'], 'goods_id' => $dinfo['goods_id'], 'product_id' => $dinfo['products']['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'], 'number' => $dinfo['extend_send']);
                     $items[] = $dinfo;
                     $arr_items[] = array('number' => $dinfo['extend_send'], 'name' => $dinfo['name'] . $dinfo['addon']['adjname']);
                     $this->toInsertItem($item);
                     $iLoop++;
                 }
             }
         }
         if ($iLoop > 0) {
             $delivery_id = $delivery['delivery_id'];
             $is_save = $odelivery->insert($delivery);
             if (!$is_save) {
                 $msg = app::get('b2c')->_('发货单生成失败!');
                 return false;
             }
             $arr_delivery['status'] = 'succ';
             $delivery['status'] = 'succ';
             $delivery['delivery_id'] = $delivery_id;
             $is_save = $odelivery->update($arr_delivery, array('delivery_id' => $delivery_id));
             if (!$is_save) {
                 $msg = app::get('b2c')->_('发货单修改失败!');
                 return false;
             }
         }
         $order_delivery = $controller->app->model('order_delivery');
         $order_delivery_data = array('order_id' => $delivery['order_id'], 'dly_id' => $delivery_id, 'dlytype' => 'delivery', 'items' => $items);
         $order_delivery->save($order_delivery_data);
     }
     //没有完全发货
     if ($nonGoods) {
         $aUpdate['ship_status'] = '2';
     } else {
         $aUpdate['ship_status'] = '1';
     }
     $aUpdate['order_id'] = $sdf['order_id'];
     $aUpdate['ship_status'] = $aUpdate['ship_status'];
     $tmp_order = $order->getList('ship_status', array('order_id' => $sdf['order_id']));
     if ($aUpdate['ship_status'] == '1' && $tmp_order[0]['ship_status'] != '3' && $tmp_order[0]['ship_status'] != '4') {
         $order->addSellLog($sdf);
     }
     $order->save($aUpdate);
     $aUpdate['total_amount'] = $sdf_order['total_amount'];
     $aUpdate['is_tax'] = $sdf_order['is_tax'];
     $aUpdate['member_id'] = $sdf_order['member_id'];
     $aUpdate['delivery'] = $delivery;
     $aUpdate['ship_billno'] = $delivery['logi_no'];
     $aUpdate['ship_corp'] = $delivery['logi_name'];
     // 配送方式名称
     $obj_dlytype = $this->app->model('dlytype');
     $arr_dlytype = $obj_dlytype->dump($delivery['delivery'], 'dt_name');
     $aUpdate['delivery']['delivery'] = $arr_dlytype['dt_name'];
     if ($sdf_order['member_id']) {
         $pamMembers = app::get('pam')->model('members');
         $arr_member = $pamMembers->getList('login_account', array('member_id' => $sdf_order['member_id'], 'login_type' => 'email'));
     }
     $aUpdate['email'] = !$sdf_order['member_id'] ? $sdf_order['consignee']['email'] : $arr_member[0]['login_account'];
     $order->fireEvent('shipping', $aUpdate, $sdf_order['member_id']);
     $is_change_point = true;
     // 订单积分结算埋点
     $policy_stage = $this->app->getConf("site.consume_point.stage");
     if ($sdf_order['pay_status'] == '1' && $aUpdate['ship_status'] == '1' && $policy_stage == '2') {
         $stage = '1';
     } else {
         $stage = '0';
     }
     // 扣除积分,使用积分
     $obj_reducte_point = kernel::service('b2c_member_point_reducte');
     if ($stage) {
         $is_change_point = $obj_reducte_point->change_point($sdf_order['member_id'], 0 - intval($sdf_order['score_u']), $msg, 'order_pay_use', 1, $stage, $sdf['order_id'], $controller->user->user_id, 'delivery');
     }
     if (!$is_change_point) {
         $msg = app::get('b2c')->_('积分扣除超过会员已有积分');
         return false;
     }
     // 订单积分结算埋点
     $policy_stage = $this->app->getConf("site.get_policy.stage");
     if ($sdf_order['pay_status'] == '1' && $aUpdate['ship_status'] == '1' && $policy_stage == '2') {
         $stage = '1';
     } else {
         $stage = '0';
     }
     // 获得积分
     $obj_add_point = kernel::service('b2c_member_point_add');
     if ($stage) {
         $obj_add_point->change_point($sdf_order['member_id'], intval($sdf_order['score_g']), $msg, 'order_pay_get', 2, $stage, $sdf['order_id'], $controller->user->user_id, 'delivery');
     }
     //取得发货的具体信息,add by hujianxin
     $message_part1 = "";
     $message = "";
     $ship_status = $aUpdate['ship_status'];
     if ($ship_status == '1') {
         //全部发货
         $message_part1 = app::get('b2c')->_("发货完成");
     } else {
         if ($ship_status == '2') {
             //部分发货
             $message_part1 = app::get('b2c')->_("已发货");
         }
     }
     $message = "" . app::get('b2c')->_('订单') . "<!--order_id=" . $sdf['order_id'] . "&delivery_id=" . $delivery['delivery_id'] . "&ship_status=" . $ship_status . "-->" . $message_part1;
     $log_text = "";
     if ($ship_status == '1') {
         $log_text[] = array('txt_key' => stripslashes('订单<a href="javascript:void(0)" onclick=\'show_delivery_item(this,"%s",%s)\' title="点击查看详细" style="color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;">全部商品</a>发货完成'), 'data' => array(0 => $delivery['delivery_id'], 1 => htmlentities(json_encode($arr_items), ENT_QUOTES)));
         if ($aCorp) {
             $log_text[] = array('txt_key' => ',物流公司:<a class="lnk" target="_blank" title="%s" href="%s">%s</a>(可点击进入物流公司网站跟踪配送)', 'data' => array(0 => $aCorp['name'], 1 => $aCorp['request_url'], 2 => $aCorp['name']));
         }
         if ($delivery['logi_no']) {
             $log_text[] = array('txt_key' => "物流单号:%s", 'data' => array(0 => $delivery['logi_no']));
             $log_addon['logi_no'] = $delivery['logi_no'];
             $log_addon = serialize($log_addon);
         }
         /*$log_text = "".app::get('b2c')->_('订单')."<a style=\"color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;\" title=\"".app::get('b2c')->_('点击查看详细')."\" onclick=\"show_delivery_item(this,&quot;".$delivery['delivery_id']."&quot;," . htmlentities(json_encode($arr_items), ENT_QUOTES) . ")
         \" href=\"javascript:void(0)\">".app::get('b2c')->_('全部商品')."</a>".app::get('b2c')->_('发货完成')."," . (($aCorp) ? "".app::get('b2c')->_('物流公司:')."<a href=\"" . $aCorp['request_url'] . "\" title=\"" . $aCorp['name'] . "\" target=\"_blank\" class=\"lnk\">" . $aCorp['name'] . "</a>(".app::get('b2c')->_('可点击进入物流公司网站跟踪配送').")" : "") . (($delivery['logi_no']) ? "".app::get('b2c')->_('物流单号:')."" . $delivery['logi_no'] : "");*/
     }
     if ($ship_status == '2') {
         $log_text['items'] = array('txt_key' => stripslashes('订单<a href="javascript:void(0)" onclick=\'show_delivery_item(this,"%s",%s)\' title="点击查看详细" style="color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;">部分商品</a>已发货'), 'data' => array(0 => $delivery['delivery_id'], 1 => htmlentities(json_encode($arr_items), ENT_QUOTES)));
         if ($aCorp) {
             $log_text['dlycorp'] = array('txt_key' => ',物流公司:<a class="lnk" target="_blank" title="%s" href="%s">%s</a>(可点击进入物流公司网站跟踪配送)', 'data' => array(0 => $aCorp['name'], 1 => $aCorp['request_url'], 2 => $aCorp['name']));
         }
         if ($delivery['logi_no']) {
             $log_text['logi_no'] = array('txt_key' => "物流单号:%s", 'data' => array(0 => $delivery['logi_no']));
             $log_addon['logi_no'] = $delivery['logi_no'];
             $log_addon = serialize($log_addon);
         }
         /*$log_text = "".app::get('b2c')->_('订单')."<a style=\"color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;\" title=\"".app::get('b2c')->_('点击查看详细')."\" onclick=\"show_delivery_item(this,&quot;".$delivery['delivery_id']."&quot;," . htmlentities(json_encode($arr_items), ENT_QUOTES) . ")
         \" href=\"javascript:void(0)\">".app::get('b2c')->_('部分商品')."</a>".app::get('b2c')->_('已发货')."," . (($aCorp) ? "".app::get('b2c')->_('物流公司:')."<a href=\"" . $aCorp['request_url'] . "\" title=\"" . $aCorp['name'] . "\" target=\"_blank\" class=\"lnk\">" . $aCorp['name'] . "</a>(".app::get('b2c')->_('可点击进入物流公司网站跟踪配送').")" : "") . (($delivery['logi_no']) ? "".app::get('b2c')->_('物流单号:')."" . $delivery['logi_no'] : "");*/
     }
     $log_text = serialize($log_text);
     // 更新发货日志结果
     $objorder_log = $this->app->model('order_log');
     $sdf_order_log = array('rel_id' => $sdf['order_id'], 'op_id' => $sdf['opid'], 'op_name' => $sdf['opname'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'delivery', 'result' => 'SUCCESS', 'log_text' => $log_text, 'addon' => $log_addon);
     $log_id = $objorder_log->save($sdf_order_log);
     // 发货单结束后的处理任务
     $obj_after_delivery_service = kernel::serviceList('b2c.order.delivery.after');
     if ($obj_after_delivery_service) {
         $delivery['delivery_items'] = $items;
         $delivery['orders'] = $order_delivery_data;
         foreach ($obj_after_delivery_service as $obj) {
             if (method_exists($obj, 'generate')) {
                 $obj->generate($delivery);
             }
         }
     }
     return true;
 }
Exemple #15
0
 public static function get_global_varys()
 {
     $app_varys = array();
     $serviceList = kernel::serviceList('cachemgr_global_vary');
     foreach ($serviceList as $service) {
         $class_name = get_class($service);
         $p = strpos($class_name, '_');
         if (method_exists($service, 'get_varys')) {
             $varys = $service->get_varys();
         }
         if (is_array($varys) && $p) {
             $app_id = substr($class_name, 0, $p);
             if (isset($app_varys[$app_id])) {
                 $app_varys[$app_id] = array_merge($app_varys[$app_id], $varys);
             } else {
                 $app_varys[$app_id] = $varys;
             }
             if (is_array($app_varys[$app_id])) {
                 ksort($app_varys[$app_id]);
             }
         }
     }
     ksort($app_varys);
     return $app_varys;
 }
Exemple #16
0
 /**
  * 创建退货单
  * @params array - 订单数据
  * @params obj - 应用对象
  * @params string - 支付单生成的记录
  * @return boolean - 创建成功与否
  */
 public function generate($sdf, &$controller = null, &$msg = '')
 {
     $order = $controller->app->model('orders');
     $subsdf = array('order_objects' => array('*', array('order_items' => array('*', array(':products' => '*')))));
     $sdf_order = $order->dump($sdf['order_id'], '*', $subsdf);
     $order_items = array();
     // 所有的goods type 处理的服务的初始化.
     $arr_service_goods_type_obj = array();
     $arr_service_goods_type = kernel::servicelist('order_goodstype_operation');
     foreach ($arr_service_goods_type as $obj_service_goods_type) {
         $goods_types = $obj_service_goods_type->get_goods_type();
         $arr_service_goods_type_obj[$goods_types] = $obj_service_goods_type;
     }
     $goods_item_type = '';
     $obj_order_item = $this->app->model('order_items');
     $nonGoods_extends = 3;
     $is_process = true;
     $is_start = true;
     foreach ($sdf_order['order_objects'] as $k => $v) {
         if ($v['obj_type'] != 'goods' && $v['obj_type'] != 'gift') {
             $arr_goods = array();
             $arr_service_goods_type_obj[$v['obj_type']]->get_order_object($v, $arr_goods);
             $sdf['send'][$arr['item_id']] = floatval($sdf['send'][$arr['item_id']]);
             foreach ($arr_goods as $arr) {
                 if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['send'][$arr['item_id']]) && !$arr['floatstore']) {
                     $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存');
                     return false;
                 }
             }
             $arr_extends_keys = array_keys($sdf['send']);
             foreach ($v['order_items'] as $arr_order_items) {
                 if ($arr_order_items['quantity'] > $arr_order_items['sendnum']) {
                     $is_process = true && $is_process;
                     $is_start = false;
                 } else {
                     if (in_array($arr_order_items['item_id'], $arr_extends_keys) && floatval($sdf['send'][$arr_order_items['item_id']]) > 0) {
                         $is_process = true && $is_process;
                         $is_start = false;
                     } else {
                         $is_process = false;
                     }
                 }
             }
             if ($is_start) {
                 $extends_goods_status = 'delivery_start';
             } else {
                 if ($is_process) {
                     $extends_goods_status = 'delivery_finish';
                 } else {
                     $extends_goods_status = 'delivery_process';
                 }
             }
             foreach (kernel::servicelist('b2c.order_store_extends') as $object) {
                 if ($object->get_goods_type() != $v['obj_type']) {
                     continue;
                 }
                 $obj_extends_store = $object;
                 if ($obj_extends_store) {
                     $obj_extends_store->store_change($v, 'reship', $extends_goods_status);
                 }
             }
         }
         foreach ($v['order_items'] as &$__arr_order_items) {
             $arr_goods = array();
             if ($__arr_order_items['item_type'] == 'product') {
                 $goods_item_type = 'goods';
             } else {
                 $goods_item_type = $__arr_order_items['item_type'];
             }
             if (!isset($__arr_order_items['products']) || !$__arr_order_items['products']) {
                 $arr_tmp = $obj_order_item->getList('*', array('item_id' => $__arr_order_items['item_id']));
                 if ($arr_tmp) {
                     $__arr_order_items['products']['product_id'] = $arr_tmp[0]['product_id'];
                     $__arr_order_items['products']['goods_id'] = $arr_tmp[0]['goods_id'];
                 }
             }
             $arr_service_goods_type_obj[$goods_item_type]->get_order_object($__arr_order_items['products'], $arr_goods);
             $__arr_order_items['floatstore'] = $arr_goods['type']['floatstore'];
             $sdf['send'][$__arr_order_items['item_id']] = floatval($sdf['send'][$__arr_order_items['item_id']]);
             if (preg_match('/^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$/', $sdf['send'][$__arr_order_items['item_id']]) && !$__arr_order_items['floatstore']) {
                 $msg = app::get('b2c')->_('此类型的商品不允许发送浮点库存');
                 return false;
             }
         }
         $order_items = array_merge($order_items, $v['order_items']);
     }
     $oreship = $controller->app->model('reship');
     if (isset($sdf['send'])) {
         if ($sdf['logi_id']) {
             $oCorp =& $controller->app->model('dlycorp');
             $aCorp = $oCorp->dump($sdf['logi_id'], '*');
         }
         $reship = array('money' => floatval($sdf['money']) + floatval($sdf['cost_protect']), 'is_protect' => $sdf['is_protect'], 'delivery' => $sdf['delivery'], 'reship_id' => $sdf['reship_id'], 'logi_id' => $sdf['logi_id'], 'logi_no' => $sdf['logi_no'], 'logi_name' => $aCorp['name'], 'ship_name' => $sdf['ship_name'], 'ship_area' => $sdf['ship_area'], 'ship_addr' => $sdf['ship_addr'], 'ship_zip' => $sdf['ship_zip'], 'ship_tel' => $sdf['ship_tel'], 'ship_mobile' => $sdf['ship_mobile'], 'ship_email' => $sdf['ship_email'], 'memo' => $sdf['memo']);
     } else {
         $reship = array('money' => $sdf_order['cost_freight'] + $sdf_order['cost_protect'], 'is_protect' => $sdf['is_protect'], 'delivery' => $sdf['delivery'], 'reship_id' => $oreship->gen_id(), 'logi_id' => '', 'logi_no' => $sdf['logi_no'], 'logi_name' => $sdf['logi_name'], 'ship_name' => $sdf['ship_name'], 'ship_area' => $sdf['ship_area'], 'ship_addr' => $sdf['ship_addr'], 'ship_zip' => $sdf['ship_zip'], 'ship_tel' => $sdf['ship_tel'], 'ship_mobile' => $sdf['ship_mobile'], 'ship_email' => $sdf['ship_email'], 'memo' => $sdf['memo']);
     }
     $reship['order_id'] = $sdf['order_id'];
     $reship['member_id'] = $sdf_order['member_id'];
     $reship['t_begin'] = time();
     $reship['op_name'] = $sdf['opname'];
     $v['type'] = 'reship';
     $reship['status'] = 'progress';
     $reship_id = $reship['reship_id'];
     //遍历订单明细
     $aBill = array();
     $nonGoods = 3;
     if (!isset($sdf['send'])) {
         //非弹窗确认
         foreach ($order_items as $key => $dinfo) {
             $dinfo['send'] = $dinfo['sendnum'];
             //须退货=已发送
             $order_items[$key] = $dinfo;
         }
     } else {
         //弹窗确认
         $is_all_send_none = true;
         if ($is_all_send_none && isset($sdf['send']) && $sdf['send']) {
             foreach ((array) $sdf['send'] as $arr_send) {
                 if ($arr_send > 0) {
                     $is_all_send_none = false;
                     break;
                 }
             }
         }
         if ($is_all_send_none) {
             $msg = app::get('b2c')->_('请输入退货数量!');
             return false;
         }
         foreach ($order_items as $key => $dinfo) {
             if (isset($sdf['send'][$dinfo['item_id']]) && floatval($sdf['send'][$dinfo['item_id']]) > 0) {
                 //弹窗并且输入了发货数量>=1
                 if (floatval($sdf['send'][$dinfo['item_id']]) > $dinfo['sendnum']) {
                     $msg = app::get('b2c')->_("超过实际需要的退货量!");
                     return false;
                 } elseif (floatval($sdf['send'][$dinfo['item_id']]) == $dinfo['sendnum']) {
                     //足量退货
                     $dinfo['send'] = $this->objMath->number_minus(array($dinfo['sendnum'], 0));
                     ////须退货=已发送
                 } else {
                     //部分退货
                     $dinfo['send'] = $this->objMath->number_minus(array($sdf['send'][$dinfo['item_id']], 0));
                     $nonGoods = 4;
                 }
             } else {
                 if (0 < $dinfo['sendnum'] && $dinfo['sendnum'] <= $dinfo['quantity'] && $nonGoods != 4) {
                     $nonGoods = 4;
                 }
             }
             $order_items[$key] = $dinfo;
         }
     }
     if ($order_items) {
         //实体商品
         $iLoop = 0;
         $arr_items = array();
         foreach ($order_items as $dinfo) {
             $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $sdf['order_id'], 'reship_id' => $reship['reship_id'], 'item_type' => $dinfo['item_type'] == 'product' ? 'goods' : $dinfo['item_type'], 'product_id' => $dinfo['products']['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'] . $dinfo['addon']['adjname'], 'number' => $dinfo['send']);
             if ($dinfo['send']) {
                 $items[] = $dinfo;
                 $arr_items[] = array('number' => $dinfo['send'], 'name' => $dinfo['name'] . $dinfo['addon']['adjname']);
                 $this->toInsertItem($item);
                 $iLoop++;
             }
         }
         if ($iLoop > 0) {
             $is_save = $oreship->insert($reship);
             if (!$is_save) {
                 $msg = app::get('b2c')->_('退货单生成失败!');
                 return false;
             }
             $up_reship['status'] = 'succ';
             $reship['status'] = 'succ';
             $reship['reship_id'] = $reship_id;
             $is_save = $oreship->update($up_reship, array('reship_id' => $reship_id));
             if (!$is_save) {
                 $msg = app::get('b2c')->_('退货单修改失败!');
                 return false;
             }
         }
     }
     //没有完全退货
     if ($nonGoods != 4 && $nonGoods_extends != 4) {
         $aUpdate['ship_status'] = 4;
     } else {
         $aUpdate['ship_status'] = 3;
     }
     $aUpdate['order_id'] = $sdf['order_id'];
     $aUpdate['ship_status'] = $aUpdate['ship_status'];
     $order->save($aUpdate);
     $order_reship = $controller->app->model('order_delivery');
     $order_reship_data = array('order_id' => $reship['order_id'], 'dly_id' => $reship_id, 'dlytype' => 'reship', 'items' => $items);
     $order_reship->save($order_reship_data);
     $aUpdate['total_amount'] = $sdf_order['total_amount'];
     $aUpdate['is_tax'] = $sdf_order['is_tax'];
     $aUpdate['member_id'] = $sdf_order['member_id'];
     $aUpdate['delivery'] = $reship;
     $aUpdate['ship_billno'] = $reship['logi_no'];
     // 取得物流公司的名称
     $obj_dlycorp = $this->app->model('dlycorp');
     $arr_dlycorp = $obj_dlycorp->dump($reship['logi_id'], 'name');
     $aUpdate['ship_corp'] = $arr_dlycorp['name'];
     if ($sdf_order['member_id']) {
         $member = $this->app->model('members');
         $arr_member = $member->dump($sdf_order['member_id'], '*', array(':account@pam' => '*'));
     }
     $aUpdate['email'] = !$sdf_order['member_id'] ? $sdf_order['consignee']['email'] : $arr_member['contact']['email'];
     $order->fireEvent('returned', $aUpdate, $sdf_order['member_id']);
     //取得发货的具体信息,add by hujianxin
     $message_part1 = "";
     $message = "";
     $ship_status = $aUpdate['ship_status'];
     if ($ship_status == '4') {
         //全部发货
         $message_part1 = app::get('b2c')->_("完全退货");
     } else {
         if ($ship_status == '3') {
             //部分发货
             $message_part1 = app::get('b2c')->_("部分退货");
         }
     }
     $message = "" . app::get('b2c')->_('订单') . "<!--order_id=" . $sdf['order_id'] . "&reship_id=" . $reship['reship_id'] . "&ship_status=" . $ship_status . "-->" . $message_part1;
     // 更新退款日志结果
     $log_text = "";
     if ($ship_status == '4') {
         $log_text[] = array('txt_key' => stripslashes('订单<a href="javascript:void(0)" onclick=\'show_delivery_item(this,"%s",%s)\' title="点击查看详细" style="color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;">全部商品</a>退货完成'), 'data' => array(0 => $reship['reship_id'], 1 => htmlentities(json_encode($arr_items), ENT_QUOTES)));
         if ($aCorp) {
             $log_text[] = array('txt_key' => ',物流公司:<a class="lnk" target="_blank" title="%s" href="%s">%s</a>(可点击进入物流公司网站跟踪配送)', 'data' => array(0 => $aCorp['name'], 1 => $aCorp['request_url'], 2 => $aCorp['name']));
         }
         if ($reship['logi_no']) {
             $log_text[] = array('txt_key' => "物流单号:%s", 'data' => array(0 => $reship['logi_no']));
             $log_addon['logi_no'] = $reship['logi_no'];
             $log_addon = serialize($log_addon);
         }
         /*$log_text = "".app::get('b2c')->_('订单')."<a style=\"color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;\" title=\"".app::get('b2c')->_('点击查看详细')."\" onclick=\"show_delivery_item(this,&quot;".$reship['reship_id']."&quot;," . htmlentities(json_encode($arr_items), ENT_QUOTES) . ")
         \" href=\"javascript:void(0)\">".app::get('b2c')->_('全部商品')."</a>".app::get('b2c')->_('退货完成')."";*/
     }
     if ($ship_status == '3') {
         $log_text[] = array('txt_key' => stripslashes('订单<a href="javascript:void(0)" onclick=\'show_delivery_item(this,"%s",%s)\' title="点击查看详细" style="color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;">部分商品</a>已退货'), 'data' => array(0 => $reship['reship_id'], 1 => htmlentities(json_encode($arr_items), ENT_QUOTES)));
         if ($aCorp) {
             $log_text[] = array('txt_key' => ',物流公司:<a class="lnk" target="_blank" title="%s" href="%s">%s</a>(可点击进入物流公司网站跟踪配送)', 'data' => array(0 => $aCorp['name'], 1 => $aCorp['request_url'], 2 => $aCorp['name']));
         }
         if ($reship['logi_no']) {
             $log_text[] = array('txt_key' => "物流单号:%s", 'data' => array(0 => $reship['logi_no']));
             $log_addon['logi_no'] = $reship['logi_no'];
             $log_addon = serialize($log_addon);
         }
         /*$log_text = "".app::get('b2c')->_('订单')."<a style=\"color: rgb(0, 51, 102); font-weight: bolder; text-decoration: underline;\" title=\"".app::get('b2c')->_('点击查看详细')."\" onclick=\"show_delivery_item(this,&quot;".$reship['reship_id']."&quot;," . htmlentities(json_encode($arr_items), ENT_QUOTES) . ")
         \" href=\"javascript:void(0)\">".app::get('b2c')->_('部分商品')."</a>".app::get('b2c')->_('已退货')."";*/
     }
     $log_text = serialize($log_text);
     $objorder_log = $this->app->model('order_log');
     $sdf_order_log = array('rel_id' => $sdf['order_id'], 'op_id' => $sdf['op_id'], 'op_name' => $sdf['opname'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'reship', 'result' => 'SUCCESS', 'log_text' => $log_text, 'addon' => $log_addon);
     $log_id = $objorder_log->save($sdf_order_log);
     // 退货单结束后的处理任务
     $obj_after_reship_service = kernel::serviceList('b2c.order.reship.after');
     $is_after_reship_task = true;
     if ($obj_after_reship_service) {
         $reship['reship_items'] = $items;
         $reship['orders'] = $order_reship_data;
         foreach ($obj_after_reship_service as $obj) {
             $is_after_reship_task = $obj->generate($reship, $msg);
         }
     }
     return $is_after_reship_task;
 }
Exemple #17
0
 function function_wapheader()
 {
     $ret = '<base href="' . kernel::base_url(1) . '"/>';
     $path = app::get('site')->res_full_url;
     $pathtopm = app::get('topm')->res_full_url;
     $debug_css = config::get('app.debug', false);
     $debug_js = config::get('app.debug', false);
     $css_mini = $debug_css ? '' : '.min';
     $js_mini = $debug_js ? '' : '.min';
     $cssver = view::ui()->getVer($debug_css);
     $jsver = view::ui()->getVer($debug_js);
     if ($debug_css) {
         $ret .= '<link rel="stylesheet" href="' . $pathtopm . '/stylesheets/base.css' . $cssver . '" />';
     } else {
         $ret .= '<link rel="stylesheet" href="' . $pathtopm . '/stylesheets/base' . $css_mini . '.css' . $cssver . '" />';
     }
     $ret .= '<link rel="stylesheet" href="' . $path . '/stylesheets/widgets_edit' . $css_mini . '.css' . $cssver . '" />';
     $ret .= view::ui()->lang_script(array('src' => 'lang.js', 'app' => 'site'));
     $ret .= view::ui()->lang_script(array('src' => 'lang.js', 'app' => 'b2c', 'pdir' => 'js_mini'));
     if ($debug_js) {
         $ret .= '<script src="' . $path . '/scripts/lib/jquery.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/lib/jquery.cookie.js' . $jsver . '"></script>
         <script src="' . $pathtopm . '/scripts/gmu.js' . $jsver . '"></script>
         <script src="' . $pathtopm . '/scripts/common.js' . $jsver . '"></script>
         <script src="' . $pathtopm . '/scripts/zepto.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/tools.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/shopwidgets.js' . $jsver . '"></script>';
     } else {
         $ret .= '<script src="' . $path . '/scripts/jquery' . $js_mini . '.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/ui' . $js_mini . '.js' . $jsver . '"></script>
         <script src="' . $path . '/scripts/shopwidgets' . $js_mini . '.js' . $jsver . '"></script>';
     }
     if ($theme_info = app::get('site')->getConf('site.theme_' . app::get('site')->getConf('current_theme') . '_color')) {
         $theme_color_href = kernel::base_url(1) . '/themes/' . app::get('site')->getConf('current_theme') . '/' . $theme_info;
         $ret .= "<script>\n            window.addEvent('domready',function(){\n                new Element('link',{rel:'stylesheet',href:'" . $theme_color_href . "'}).inject(document.head);\n            });\n            </script>";
     }
     /* $ret .= '<script>
                         window.addEvent(\'domready\',function(){(parent.loadedPart[1])++});
                         parent.document.getElementById(\'loadpart\').style.display="none";
                         parent.document.getElementById(\'body\').style.display="block";
                     </script>';
     */
     foreach (kernel::serviceList('site_theme_view_helper') as $service) {
         if (method_exists($service, 'function_wapheader')) {
             $ret .= $service->function_wapheader();
         }
     }
     return $ret;
 }
Exemple #18
0
 public function save()
 {
     $this->begin();
     $dtime = $this->_request->get_post('_DTIME_');
     $post = $this->_request->get_post('article');
     $article_id = $this->_request->get_post('article_id');
     if (!empty($post['indexs']['pubtime'])) {
         $post['indexs']['pubtime'] = $post['indexs']['pubtime'] . ' ' . $dtime['H']['article[indexs']['pubtime'] . ':' . $dtime['M']['article[indexs']['pubtime'];
         $post['indexs']['pubtime'] = strtotime($post['indexs']['pubtime']);
     }
     if ($post['ext']['enable_goods_info'] > 0) {
         $post['bodys']['goods_info'] = $post['ext']['goods'];
     } else {
         $post['bodys']['goods_info'] = '';
     }
     if ($post['ext']['enable_hot_link'] > 0) {
         $post['bodys']['hot_link'] = $post['ext']['hot'];
     } else {
         $post['bodys']['hot_link'] = '';
     }
     if ($article_id > 0) {
         $res = app::get('content')->model('article_indexs')->update($post['indexs'], array('article_id' => $article_id));
         if ($res) {
             $res = app::get('content')->model('article_bodys')->update($post['bodys'], array('article_id' => $article_id));
             if ($res) {
                 $services = kernel::serviceList('content_article_index');
                 foreach ($services as $service) {
                     if ($service instanceof content_interface_index) {
                         $service->update($article_id, $post);
                     }
                 }
                 $this->end(true, app::get('content')->_('保存成功'));
             } else {
                 $this->end(false, app::get('content')->_('保存失败'));
             }
         } else {
             $this->end(false, app::get('content')->_('保存失败'));
         }
     } else {
         $res = app::get('content')->model('article_indexs')->insert($post['indexs']);
         if ($res) {
             $post['bodys']['article_id'] = $res;
             $res = app::get('content')->model('article_bodys')->insert($post['bodys']);
             if ($res) {
                 $services = kernel::serviceList('content_article_index');
                 foreach ($services as $service) {
                     if ($service instanceof content_interface_index) {
                         $service->insert($post);
                     }
                 }
                 $this->end(true, app::get('content')->_('添加成功'), null, array('id' => $post['bodys']['article_id']));
             } else {
                 $this->end(false, app::get('content')->_('添加失败'));
             }
         } else {
             $this->end(false, app::get('content')->_('添加失败'));
         }
     }
 }
Exemple #19
0
 public function pre_display(&$content)
 {
     parent::pre_display($content);
     if ($this->_ignore_pre_display === false) {
         foreach (kernel::serviceList('desktop_render_pre_display') as $service) {
             if (method_exists($service, 'pre_display')) {
                 $service->pre_display($content);
             }
         }
     }
 }
Exemple #20
0
 /**
  * 重写getList方法
  */
 public function getList($cols = '*', $filter = array(), $offset = 0, $limit = -1, $orderType = null)
 {
     $arr_list = parent::getList($cols, $filter, $offset, $limit, $orderType);
     $obj_extends_order_service = kernel::serviceList('b2c_order_extends_actions');
     if ($obj_extends_order_service) {
         foreach ($obj_extends_order_service as $obj) {
             $obj->extend_list($arr_list);
         }
     }
     $info_object = kernel::service('sensitive_information');
     if (is_object($info_object)) {
         $info_object->opinfo($arr_list, 'b2c_mdl_orders', __FUNCTION__);
     }
     return $arr_list;
 }
Exemple #21
0
 /**
  * 重写getList方法
  */
 public function getList($cols = '*', $filter = array(), $offset = 0, $limit = -1, $orderType = null)
 {
     if (!$cols) {
         $cols = $this->defaultCols;
     }
     if (!empty($this->appendCols)) {
         $cols .= ',' . $this->appendCols;
     }
     if ($this->use_meta) {
         $meta_info = $this->prepare_select($cols);
     }
     $orderType = $orderType ? $orderType : $this->defaultOrder;
     $sql = 'SELECT ' . $cols . ' FROM `' . $this->table_name(true) . '` WHERE ' . $this->_filter_sql($filter);
     if ($orderType) {
         $sql .= ' ORDER BY ' . (is_array($orderType) ? implode($orderType, ' ') : $orderType);
     }
     $data = $this->db->selectLimit($sql, $limit, $offset);
     $this->tidy_data($data, $cols);
     if ($this->use_meta && count($meta_info['metacols']) && $data) {
         foreach ($meta_info['metacols'] as $col) {
             $obj_meta = new dbeav_meta($this->table_name(true), $col, $meta_info['has_pk']);
             $obj_meta->select($data);
         }
     }
     $arr_list = $data;
     $obj_extends_order_service = kernel::serviceList('b2c_order_extends_actions');
     if ($obj_extends_order_service) {
         foreach ($obj_extends_order_service as $obj) {
             $obj->extend_list($arr_list);
         }
     }
     $info_object = kernel::service('sensitive_information');
     if (is_object($info_object)) {
         $info_object->opinfo($arr_list, 'b2c_mdl_orders', __FUNCTION__);
     }
     return $arr_list;
 }
Exemple #22
0
 public function save()
 {
     $this->begin('index.php?app=content&ctl=admin_node&act=index');
     $post = $this->_request->get_post('node');
     $node_id = $this->_request->get_post('node_id');
     if (empty($post)) {
         $this->end(false, '错误请求');
     }
     if ($post['parent_id']) {
         //存在父节点时,查看父节点是否启用
         $aInfo = kernel::single("content_article_node")->get_node($post['parent_id']);
         if ($aInfo['ifpub'] == 'false' && $post['ifpub']) {
             if ($post['ifpub'] != $aInfo['ifpub']) {
                 $post['ifpub'] = $aInfo['ifpub'];
                 $msg = '父节点未发布!';
             }
         }
     }
     $post['uptime'] = time();
     $post['homepage'] = $post['homepage'] ? $post['homepage'] : 'false';
     if ($node_id > 0) {
         $res = app::get('content')->model('article_nodes')->update($post, array('node_id' => $node_id));
         if ($res) {
             $services = kernel::serviceList('content_article_node');
             foreach ($services as $service) {
                 if ($service instanceof content_interface_node) {
                     $service->update($node_id, $post);
                 }
             }
             $this->end(true, '保存成功!' . $msg);
         } else {
             $this->end(false, '保存失败!' . $msg);
         }
     } else {
         $res = app::get('content')->model('article_nodes')->insert($post);
         if ($res) {
             $services = kernel::serviceList('content_article_node');
             foreach ($services as $service) {
                 if ($service instanceof content_interface_node) {
                     $service->insert($post);
                 }
             }
             $this->end(true, '添加成功!' . $msg);
         } else {
             $this->end(false, '添加失败!' . $msg);
         }
     }
 }