コード例 #1
0
/**
 * Smarty {optiondisplayer} function plugin
 *
 * Type:     function<br>
 * Name:     optiondisplayer<br>
 * Purpose:  display option dropdown list
 *
 * @param         $params
 * @param \Smarty $smarty
 * @return bool
 */
function smarty_function_optiondisplayer($params, &$smarty)
{
    global $db;
    $groupname = $params['options'];
    $product = $params['product'];
    $display_price_as = isset($params['display_price_as']) ? $params['display_price_as'] : 'diff';
    // get the option group
    $og = new optiongroup();
    //$group = $og->find('bytitle', $groupname);
    $group = $og->find('first', 'product_id=' . $product->id . ' AND title="' . $groupname . '"');
    //grab the options configured for this product
    $options = $product->optionDropdown($group->title, $display_price_as);
    // if there are no  options we can return now
    if (empty($options)) {
        return false;
    }
    // find the default option if there is one.
    $default = $db->selectValue('option', 'id', 'optiongroup_id=' . $group->id . ' AND is_default=1');
    $view = $params['view'];
    //if((isset() || $og->required == false) $includeblank = $params['includeblank'] ;
    //elseif((isset($params['includeblank']) && $params['includeblank'] == false) || $og->required == true) $includeblank = false;
    $includeblank = $og->required == false && !isset($params['includeblank']) ? gt('-- Please Select an Option --') : $params['includeblank'];
    $template = get_common_template($view, $smarty->getTemplateVars('__loc'), 'options');
    $template->assign('product', $product);
    $template->assign('options', $options);
    $template->assign('group', $group);
    $template->assign('params', $params);
    $template->assign('default', $default);
    $template->assign('includeblank', $includeblank);
    $template->assign('required', $params['required']);
    $template->assign('selected', $params['selected']);
    echo $template->render();
}
コード例 #2
0
ファイル: product.php プロジェクト: notzen/exponent-cms
 public function update($params = array())
 {
     global $db;
     //Get the product
     $product = $db->selectObject('product', 'id =' . $params['id']);
     //Get product files
     $product->expFile = $this->getProductFiles($params['id']);
     // eDebug($product, true);
     $tab_loaded = $params['tab_loaded'];
     //check if we're saving a newly copied product and if we create children also
     $originalId = isset($params['original_id']) && isset($params['copy_children']) ? $params['original_id'] : 0;
     $originalModel = isset($params['original_model']) && isset($params['copy_children']) ? $params['original_model'] : 0;
     if (!empty($product->parent_id)) {
         $product->sef_url = '';
     }
     //if child, set sef_url to nada
     //Tabs with not directly being saved in the product table and need some special operations
     $tab_exceptions = array('categories', 'options', 'related', 'userinput', 'extrafields', 'model', 'notes');
     foreach ($tab_loaded as $tab_key => $tab_item) {
         if (!in_array($tab_key, $tab_exceptions)) {
             foreach ($params[$tab_key] as $key => $item) {
                 $product->{$key} = $item;
             }
         }
     }
     if (isset($tab_loaded['images'])) {
         $product->expFile = $params['expFile'];
     }
     if ($params['shipping']['required_shipping_calculator_id'] > 0) {
         $product->required_shipping_method = $params['required_shipping_methods'][$params['shipping']['required_shipping_calculator_id']];
     }
     if (isset($tab_loaded['categories'])) {
         $this->saveCategories($params['storeCategory'], null, $params['id'], $this->classname);
     }
     if (isset($tab_loaded['options'])) {
         //Option Group Tab
         if (!empty($params['optiongroups'])) {
             foreach ($params['optiongroups'] as $title => $group) {
                 if (isset($this->params['original_id']) && $params['original_id'] != 0) {
                     $group['id'] = '';
                 }
                 //for copying products
                 $optiongroup = new optiongroup($group);
                 $optiongroup->product_id = $product->id;
                 $optiongroup->save();
                 foreach ($params['optiongroups'][$title]['options'] as $opt_title => $opt) {
                     if (isset($params['original_id']) && $params['original_id'] != 0) {
                         $opt['id'] = '';
                     }
                     //for copying products
                     $opt['product_id'] = $product->id;
                     $opt['is_default'] = false;
                     $opt['title'] = $opt_title;
                     $opt['optiongroup_id'] = $optiongroup->id;
                     if (isset($params['defaults'][$title]) && $params['defaults'][$title] == $opt['title']) {
                         $opt['is_default'] = true;
                     }
                     $option = new option($opt);
                     $option->save();
                 }
             }
         }
     }
     if (isset($tab_loaded['related'])) {
         //Related Products Tab
         if (!empty($tab_loaded['related']) && (empty($originalId) || !empty($params['copy_related']))) {
             $relprods = $db->selectObjects('crosssellItem_product', "product_id=" . $product->id);
             $db->delete('crosssellItem_product', 'product_id=' . $product->id);
             foreach ($params['relatedProducts'] as $key => $prodid) {
                 $ptype = new product($prodid);
                 $tmp->product_id = $product->id;
                 $tmp->crosssellItem_id = $prodid;
                 $tmp->product_type = $ptype->product_type;
                 $db->insertObject($tmp, 'crosssellItem_product');
                 if (isset($params['relateBothWays'][$prodid])) {
                     $tmp->crosssellItem_id = $product->id;
                     $tmp->product_id = $prodid;
                     $tmp->product_type = $ptype->product_type;
                     $db->insertObject($tmp, 'crosssellItem_product');
                 }
             }
         }
     }
     if (isset($tab_loaded['userinput'])) {
         //User Input fields Tab
         if (isset($params['user_input_use']) && is_array($params['user_input_use'])) {
             foreach ($params['user_input_use'] as $ukey => $ufield) {
                 $user_input_fields[] = array('use' => $params['user_input_use'][$ukey], 'name' => $params['user_input_name'][$ukey], 'is_required' => $params['user_input_is_required'][$ukey], 'min_length' => $params['user_input_min_length'][$ukey], 'max_length' => $params['user_input_max_length'][$ukey], 'description' => $params['user_input_description'][$ukey]);
             }
             $product->user_input_fields = serialize($user_input_fields);
         } else {
             $product->user_input_fields = serialize(array());
         }
     }
     if (isset($tab_loaded['extrafields'])) {
         //Extra Field Tab
         foreach ($params['extra_fields_name'] as $xkey => $xfield) {
             if (!empty($xfield)) {
                 $extra_fields[] = array('name' => $xfield, 'value' => $params['extra_fields_value'][$xkey]);
             }
         }
         if (is_array($extra_fields)) {
             $product->extra_fields = serialize($extra_fields);
         } else {
             unset($product->extra_fields);
         }
     }
     //Adjusting Children Products
     if (!empty($originalId) && !empty($this->params['copy_children'])) {
         $origProd = new $product_type($originalId);
         $children = $origProd->find('all', 'parent_id=' . $originalId);
         foreach ($children as $child) {
             unset($child->id);
             $child->parent_id = $product->id;
             $child->title = $product->title;
             $child->sef_url = '';
             if (isset($this->params['adjust_child_price']) && isset($this->params['new_child_price']) && is_numeric($this->params['new_child_price'])) {
                 $child->base_price = $this->params['new_child_price'];
             }
             if (!empty($originalModel)) {
                 $child->model = str_ireplace($originalModel, $product->model, $child->model);
             }
             $child->save();
         }
     }
     //Check if we are copying and not just editing product
     if (isset($params['original_id'])) {
         // eDebug($product->id, true);
         unset($product->id);
         unset($product->sef_url);
         $product->original_id = $params['original_id'];
         // eDebug($product, true);
     }
     parent::update($product);
 }