function cw_error_check(&$array_to_check, $rules, $attributes_type = '')
{
    $error = array();
    $index = 1;
    foreach ($rules as $k => $v) {
        $func = is_array($v) && isset($v['func']) ? $v['func'] : $v;
        if ($func && function_exists($func)) {
            $is_error = $func($array_to_check[$k], $k, $array_to_check);
        } else {
            $is_error = empty($array_to_check[$k]) || !$array_to_check[$k];
        }
        if ($is_error) {
            $var = 'err_field_' . ($v['lng'] ? $v['lng'] : $k);
            $lng = cw_get_langvar_by_name($var, '', false, true);
            $error[] = $index++ . '. ' . ($lng ? $lng : $var);
        }
    }
    if ($attributes_type) {
        $error = array_merge($error, cw_call('cw_attributes_check', array($array_to_check['attribute_class_id'], &$array_to_check['attributes'], $attributes_type, $index)));
    }
    if (!count($error)) {
        return false;
    }
    return implode("<br/>\n", $error);
}
function cw_ac_tabs_js_abstract($params, $return)
{
    if ($return['name'] == 'product_data') {
        if (!isset($return['js_tabs']['accessories'])) {
            $return['js_tabs']['accessories'] = array('title' => cw_get_langvar_by_name('lbl_ac_accessories'), 'template' => 'addons/accessories/product_modify_accessories.tpl');
        }
        if (!isset($return['js_tabs']['upselling'])) {
            $return['js_tabs']['upselling'] = array('title' => cw_get_langvar_by_name('lbl_upselling_links'), 'template' => 'addons/accessories/product_modify_upselling.tpl');
        }
    }
    if ($return['name'] == 'product_data_customer') {
        global $product_accessories, $recommended_products;
        if (!isset($return['js_tabs']['accessories']) && !empty($product_accessories)) {
            $return['js_tabs']['accessories'] = array('title' => cw_get_langvar_by_name('lbl_ac_accessories'), 'template' => 'addons/accessories/product_accessories_list.tpl');
        }
        /*
                if (!isset($return['js_tabs']['accessories_rec']) && !empty($recommended_products)) {
                    $return['js_tabs']['accessories_rec'] = array(
                        'title' => cw_get_langvar_by_name('lbl_ac_recommended_products'),
                        'template' => 'addons/accessories/product_recommended_list.tpl',
                    );
                }
        */
    }
    return $return;
}
function cw_in_images_get_image_info($image_id, $title)
{
    global $tables;
    $tmp = cw_query_first("select * from {$tables['webmaster_images']} where id='{$image_id}'");
    $tmp = cw_image_info('webmaster_images', $tmp);
    $tmp['id'] = $image_id;
    $tmp['title'] = cw_get_langvar_by_name('image_' . $title);
    return $tmp;
}
function cw_config_process_options($options)
{
    global $tables;
    if ($options) {
        foreach ($options as $k => $v) {
            switch ($v['name']) {
                case 'cmpi_currency':
                    $currs = cw_query_hash("SELECT code, name FROM {$tables['currencies']}", "code", false, true);
                    if (empty($currs)) {
                        unset($options[$k]);
                        continue;
                    }
                    $v['variants'] = "";
                    foreach ($currs as $ek => $ev) {
                        $v['variants'] .= $ek . ":({$ek}) " . $ev . "\n";
                    }
                    break;
            }
            if (in_array($v['type'], array("selector", "multiselector"))) {
                if (empty($v['variants'])) {
                    unset($options[$k]);
                    continue;
                }
                $vars = cw_parse_str(trim($v['variants']), "\n", ":");
                $vars = cw_array_map("trim", $vars);
                if ($v['type'] == "multiselector") {
                    $v['value'] = explode(";", $v['value']);
                    foreach ($v['value'] as $vk => $vv) {
                        if (!isset($vars[$vv])) {
                            unset($v['value'][$vk]);
                        }
                    }
                    $options[$k]['value'] = $v['value'] = array_values($v['value']);
                }
                $options[$k]['variants'] = array();
                foreach ($vars as $vk => $vv) {
                    $options[$k]['variants'][$vk] = array("name" => $vv);
                    if (strpos($vv, " ") === false) {
                        $name = cw_get_langvar_by_name($vv, NULL, false, true);
                        if (!empty($name)) {
                            $options[$k]['variants'][$vk] = array("name" => $name);
                        }
                    }
                    if ($v['type'] == "selector") {
                        $options[$k]['variants'][$vk]['selected'] = $v['value'] == $vk;
                    } else {
                        $options[$k]['variants'][$vk]['selected'] = in_array($vk, $v['value']);
                    }
                }
            }
            if (in_array($v['type'], array('shipping', 'memberships', 'doc_status'))) {
                $options[$k]['value'] = unserialize($v['value']);
            }
        }
    }
    return $options;
}
function cw_order_messages_tabs_js_abstract($params, $return)
{
    if ($return['name'] == 'doc_O_info') {
        if (AREA_TYPE != 'A') {
            return $return;
        }
        $return['js_tabs']['order_messages'] = array('title' => cw_get_langvar_by_name('lbl_messages'), 'template' => 'addons/order_messages/doc_O_info.tpl');
    }
    return $return;
}
function cw_dpi_tabs_js_abstract($params, $return)
{
    if ($return['name'] == 'product_data') {
        if (AREA_TYPE != 'A') {
            return $return;
        }
        if (!isset($return['js_tabs']['dpi'])) {
            $return['js_tabs']['dpi'] = array('title' => cw_get_langvar_by_name('lbl_detailed_images'), 'template' => 'addons/detailed_product_images/product_images_modify.tpl');
        }
    }
    return $return;
}
function cw_product_options_tabs_js_abstract($params, $return)
{
    if ($return['name'] == 'product_data') {
        if (AREA_TYPE != 'A') {
            return $return;
        }
        $return['js_tabs']['product_options'] = array('title' => cw_get_langvar_by_name('lbl_product_options'), 'template' => 'addons/product_options/main/products/product/options.tpl');
        # kornev, need a condition here
        $return['js_tabs']['product_variants'] = array('title' => cw_get_langvar_by_name('lbl_product_variants'), 'template' => 'addons/product_options/main/products/product/variants.tpl');
    }
    return $return;
}
function tabs_js_abstract($params, $return)
{
    if ($return['name'] == 'product_data') {
        if (AREA_TYPE != 'A') {
            return $return;
        }
        if (!isset($return['js_tabs']['cms'])) {
            $return['js_tabs']['cms'] = array('title' => cw_get_langvar_by_name('lbl_cs_content_sections'), 'template' => 'addons/cms/product_banners.tpl');
        }
    }
    return $return;
}
/**
 * Declare product tabs
 * 
 * @see cw_tabs_js_abstract
 * 
 * @param OLD params notation
 */
function cw_tabs_js_abstract($params, $return)
{
    global $product_video;
    if ($return['name'] == 'product_data' && AREA_TYPE == 'A') {
        if (!isset($return['js_tabs']['product_video'])) {
            $return['js_tabs']['product_video'] = array('title' => cw_get_langvar_by_name('lbl_product_video'), 'template' => 'addons/' . addon_name . '/admin/product.tpl');
        }
    }
    if ($return['name'] == 'product_data_customer' && !empty($product_video) && AREA_TYPE == 'C') {
        $return['js_tabs']['product_data'] = array('title' => cw_get_langvar_by_name('lbl_product_video'), 'template' => 'addons/' . addon_name . '/customer/product.tpl');
    }
    return $return;
}
function smarty_function_lng($params, &$smarty)
{
    extract($params);
    if (empty($name)) {
        $smarty->trigger_error("lng: missing 'name' parameter");
        return;
    }
    if ($assign) {
        $smarty->assign($assign, cw_get_langvar_by_name($name));
    } else {
        return cw_get_langvar_by_name($name);
    }
}
function cw_csv2table($fn, $delimiter = '')
{
    global $tables;
    $h = fopen($fn, 'r');
    $tab = '';
    $fields = '';
    $brf_err = cw_get_langvar_by_name('lbl_imp_err_br_file');
    $wrtab_err = cw_get_langvar_by_name('lbl_imp_err_tab_not_exst');
    while ($tab == '') {
        $tab = trim(fgets($h));
    }
    if (!preg_match("'^\\[[^\\s]*\\]\$'i", $tab)) {
        return $brf_err;
    }
    $tab = preg_replace("'^\\[(.*)\\]\$'i", "\$1", $tab);
    if (!isset($tables[$tab])) {
        return $wrtab_err;
    }
    while ($fields == '') {
        $fields = trim(fgets($h));
    }
    if (!preg_match("'^\\![^\\s\\!]+\\!.+'i", $fields)) {
        return $brf_err;
    }
    if ($delimiter == '') {
        $delimiter = preg_replace("'^\\![^\\s\\!]+(.)\\!.+'", "\$1", $fields);
    }
    $fields = explode($delimiter, $fields);
    foreach ($fields as $k => $v) {
        if (!preg_match("'^\\![^\\s]+\$'i", trim($v))) {
            return $brf_err;
        }
        $v = preg_replace("'^\\!(.*)\$'", "\$1", trim($v));
        $fields[$k] = $v;
    }
    while (($data = fgetcsv($h, 0, $delimiter)) !== false) {
        if (sizeof($data) != sizeof($fields)) {
            return $brf_err;
        }
        foreach ($fields as $k => $v) {
            $data2[$v] = $data[$k];
        }
        $arr[] = $data2;
    }
    db_query("TRUNCATE TABLE {$tables[$tab]}");
    foreach ($arr as $data) {
        cw_array2insert_esc($tab, $data);
    }
    return true;
}
function dashboard_action_update()
{
    if ($_SERVER['REQUEST_METHOD'] != 'POST') {
        dashboard_redirect();
    }
    $dashboard = $_POST['dashboard'];
    if (empty($dashboard)) {
        dashboard_redirect();
    }
    foreach ($dashboard as $name => $dash) {
        $data = array('name' => $name, 'pos' => intval($dash['pos']), 'active' => intval($dash['active']));
        cw_array2insert('dashboard', $data, true);
    }
    $top_message = array('content' => cw_get_langvar_by_name('msg_ppd_filetypes_updated_succes'), 'type' => 'I');
    dashboard_redirect();
}
function ppd_get_pathto_file($file = null)
{
    global $var_dirs, $config;
    static $files_dir;
    if (empty($file)) {
        return null;
    }
    if (!isset($files_dir)) {
        $files_dir = ppd_correct_dirname($config['ppd']['ppd_product_files_dir']);
    }
    $path = realpath($var_dirs['files'] . $files_dir . $file);
    if (empty($path)) {
        $path = cw_get_langvar_by_name('txt_ppd_file_not_found');
    }
    return $path;
}
function cw_is_catalog_product(&$params)
{
    $product = $params;
    if (empty($params['product_id'])) {
        // function is called from smarty
        global $smarty;
        $smarty_product = $smarty->get_template_vars('product');
        if ($smarty_product) {
            $product = $smarty_product;
            if ($product['product_type'] == PRODUCT_TYPE_CATALOG) {
                $params['button_title'] = cw_get_langvar_by_name('lbl_catalog_product_button');
                $params['href'] = "index.php?target=catalog_redirect&product_id={$product['product_id']}";
            }
        }
        return false;
        // prevent real template replacement because href is already replaced
    }
    return $product['product_type'] == PRODUCT_TYPE_CATALOG;
}
function cw_tabs_get_section_tabs($section_id, $first = false)
{
    global $tables, $accl;
    $tabs = cw_query("select nt.*, n.visible, n.target from {$tables['navigation_tabs']} as nt, {$tables['navigation_targets']} as n left join {$tables['addons']} as m on m.addon=n.addon where (m.active or (m.addon is null and n.addon='')) and nt.tab_id=n.tab_id and n.section_id='{$section_id}' order by nt.orderby");
    $return = array();
    if ($tabs) {
        foreach ($tabs as $k => $tab) {
            if ($tab['access_level'] && !$accl[$tab['access_level']]) {
                continue;
            }
            if ($first) {
                return $tab;
            }
            $return[$tab['tab_id']] = $tab;
            $return[$tab['tab_id']]['title_lng'] = cw_get_langvar_by_name($tab['title']);
        }
    }
    return $return;
}
function cw_pt_tabs_js_abstract($params, $return)
{
    global $pt_is_tabs, $pt_tabs;
    if ($return['name'] == 'product_data' && AREA_TYPE == 'A') {
        if (!isset($return['js_tabs']['product_tabs'])) {
            $return['js_tabs']['product_tabs'] = array('title' => cw_get_langvar_by_name('lbl_pt_product_tabs'), 'template' => 'addons/product_tabs/admin/main.tpl');
        }
    }
    if ($return['name'] == 'product_data_customer' && (isset($pt_is_tabs) && $pt_is_tabs == true) && AREA_TYPE == 'C') {
        if (!isset($pt_tabs) || !is_array($pt_tabs)) {
            return $return;
        }
        foreach ($pt_tabs as $key => $tab) {
            if (!isset($return['js_tabs']['ptab-' . $key])) {
                $return['js_tabs']['ptab-' . $key] = array('title' => $tab['title'], 'template' => 'addons/product_tabs/customer/tab_content.tpl');
            }
        }
    }
    return $return;
}
function cw_addons_get($parent_addon = '')
{
    global $current_language, $tables;
    $addons = cw_query("select m.*, IFNULL(lng1.value, m.addon) as addon_lng, IFNULL(lng2.value, m.descr) as addon_descr_lng from {$tables['addons']} as m left join {$tables['languages']} as lng1 ON lng1.code = '{$current_language}' and lng1.name = CONCAT('addon_name_', m.addon) left join {$tables['languages']} as lng2 ON lng2.code = '{$current_language}' and lng2.name = CONCAT('addon_descr_', m.addon) where m.parent='{$parent_addon}' order by addon_lng");
    $mod_options = cw_query_column("select {$tables['addons']}.addon from {$tables['addons']}, {$tables['config_categories']} where {$tables['addons']}.addon={$tables['config_categories']}.category group by {$tables['addons']}.addon", "addon");
    foreach ($addons as $k => $v) {
        // cw_get_langvar_by_name provides name and descr including tooltip
        if ($v['addon'] != $v['addon_lng']) {
            $addons[$k]['addon_lng'] = cw_get_langvar_by_name('addon_name_' . $v['addon']);
        }
        if ($v['descr'] != $v['addon_descr_lng']) {
            $addons[$k]['addon_descr_lng'] = cw_get_langvar_by_name('addon_descr_' . $v['addon']);
        }
        if ($parent_id == 0) {
            $addons[$k]['subaddons'] = cw_addons_get($v['addon']);
        }
        if (in_array($v['addon'], $mod_options)) {
            $addons[$k]['options_url'] = true;
        }
    }
    return $addons;
}
 function dumpTableContent($table, $schema, $fd)
 {
     global $sql_backup_rows;
     if ($fd === false) {
         print "{$schema}\n\n";
     } else {
         fwrite($fd, "{$schema}\n\n");
         echo cw_get_langvar_by_name("lbl_dumping_table_n", array("table" => $table), false, true) . "<br />\n";
     }
     $rows_cnt = 0;
     $current_row = 0;
     $count = cw_query_first_cell("SELECT count(*) FROM " . $table);
     if ($count < 1) {
         return;
     }
     for ($pos = 0; $count > 0; $count -= $sql_backup_rows, $pos += $sql_backup_rows) {
         $local_query = "SELECT * FROM {$table} LIMIT {$pos},{$sql_backup_rows}";
         $result = db_query($local_query);
         if ($result != FALSE) {
             $fields_cnt = mysql_num_fields($result);
             $rows_cnt = mysql_num_rows($result);
             // Checks whether the field is an integer or not
             for ($j = 0; $j < $fields_cnt; $j++) {
                 $field_set[$j] = mysql_field_name($result, $j);
                 $type = mysql_field_type($result, $j);
                 $field_num[$j] = ($type == 'tinyint' || $type == 'smallint' || $type == 'mediumint' || $type == 'int' || $type == 'bigint' || $type == 'timestamp') && (!defined("OVERRIDE_NUM_FIELD") || !constant("OVERRIDE_NUM_FIELD"));
             }
             // Sets the scheme
             $schema_insert = "INSERT INTO {$table} VALUES (";
             $search = array("", "\n", "\r", "");
             //\x08\\x09, not required
             $replace = array('0', '\\n', '\\r', '\\Z');
             $current_row = 0;
             while ($row = mysql_fetch_row($result)) {
                 $current_row++;
                 for ($j = 0; $j < $fields_cnt; $j++) {
                     if (!isset($row[$j])) {
                         $values[] = 'NULL';
                     } else {
                         if ($row[$j] == '0' || $row[$j] != '') {
                             // a number
                             if ($field_num[$j]) {
                                 $values[] = $row[$j];
                             } else {
                                 $values[] = "'" . str_replace($search, $replace, addslashes($row[$j])) . "'";
                             }
                         } else {
                             $values[] = "''";
                         }
                     }
                     // end if
                 }
                 // end for
                 // Extended inserts case
                 $insert_line = $schema_insert . implode(', ', $values) . ')';
                 unset($values);
                 // Send the line
                 if ($fd === false) {
                     print $insert_line . ";\n";
                     flush();
                 } else {
                     fwrite($fd, $insert_line . ";\n");
                     fflush($fd);
                 }
                 // loic1: send a fake header to bypass browser timeout if data
                 //        are bufferized
             }
             // end while
         }
         // end if ($result != FALSE)
         db_free_result($result);
         if ($fd !== false) {
             cw_flush(". ");
         }
     }
     // for
     if ($fd === false) {
         print "\n";
     } else {
         fwrite($fd, "\n");
         echo "<br />";
     }
 }
<?php

cw_load('map');
if ($mode == 'cities' && $country) {
    cw_include('include/map/cities.php');
    $smarty->assign('main', 'cities');
    $location[] = array(cw_get_langvar_by_name('lbl_cities'), '');
} elseif ($mode == 'regions' && $country) {
    cw_include('include/map/regions.php');
    $smarty->assign('main', 'regions');
    $location[] = array(cw_get_langvar_by_name('lbl_regions'), '');
} elseif ($mode == 'states' && $country) {
    cw_include('include/map/states.php');
    $smarty->assign('main', 'states');
    $location[] = array(cw_get_langvar_by_name('lbl_states'), '');
} elseif ($mode == 'counties' && $country) {
    cw_include('include/map/counties.php');
    $smarty->assign('main', 'counties');
    $location[] = array(cw_get_langvar_by_name('lbl_counties'), '');
} else {
    cw_include('include/map/countries.php');
    $smarty->assign('main', 'countries');
    $location[] = array(cw_get_langvar_by_name('lbl_countries_management'), '');
}
 $instagram_uname = $instagram_login_info['data']->user->username;
 $instagram_user_name = $instagram_login_info['data']->user->full_name;
 if (empty($instagram_user_name)) {
     $instagram_user_name = $instagram_uname;
 }
 $instagram_email = "instagram-" . $instagram_user_id . "-tmp-email";
 $instagram_profile_image_url = $instagram_login_info['data']->user->profile_picture;
 //        $instagram_personMarkup         = "$instagram_email<div><img src='$instagram_profile_image_url?sz=50'></div>";
 //================================================================
 cw_load('user');
 $user_data = cw_query_first("SELECT {$tables['customers']}.*\n                                    FROM {$tables['customers']} \n                                    WHERE oauth_uid='" . $instagram_user_id . "' AND oauth_type='I'  \n                                    AND usertype='" . $current_area . "'");
 if (!empty($user_data)) {
     // login user
     if ($user_data['status'] != 'Y') {
         //error message disabled login
         cw_add_top_message(cw_get_langvar_by_name('err_account_temporary_disabled'), 'E');
         cw_header_location($instagram_redirect_url);
     }
 } else {
     //add new customer to database
     $register = array();
     $register['email'] = $instagram_email;
     $register['usertype'] = $current_area;
     $partner_membership =& cw_session_register('partner_membership');
     $register['membership_id'] = $partner_membership;
     $customer_id = cw_user_create_profile($register);
     cw_array2update('customers', array('oauth_uid' => $instagram_user_id, 'oauth_type' => 'I'), "customer_id='{$customer_id}'");
     $user_name = explode(" ", $instagram_user_name);
     $address = array('main' => 1, 'firstname' => $user_name[0], 'lastname' => $user_name[1]);
     $userinfo = array('addresses' => $address);
     cw_user_update($userinfo, $customer_id, $customer_id);
function cw_clear_stats_xaff($rsd_limit)
{
    global $tables;
    if (empty($rsd_limit)) {
        db_query("DELETE FROM {$tables['salesman_adv_clicks']}");
        db_query("DELETE FROM {$tables['salesman_clicks']}");
        db_query("DELETE FROM {$tables['salesman_views']}");
    } else {
        db_query("DELETE FROM {$tables['salesman_adv_clicks']} WHERE add_date < '{$rsd_limit}'");
        db_query("DELETE FROM {$tables['salesman_clicks']} WHERE add_date < '{$rsd_limit}'");
        db_query("DELETE FROM {$tables['salesman_views']} WHERE add_date < '{$rsd_limit}'");
    }
    return cw_get_langvar_by_name("msg_adm_summary_aff_stat_del");
}
    cw_add_ajax_block(array('id' => 'script', 'content' => '$("#' . $addon . '").removeClass("on").removeClass("off").addClass("' . ($active == 1 ? 'on' : 'off') . '");'));
    cw_add_ajax_block(array('id' => 'script', 'content' => '$("[parent=' . $addon . ']").parent().removeClass("addon_locked")' . ($active == 1 ? '' : '.addClass("addon_locked")') . ';'));
}
$addon = $_GET['addon'];
if (!empty($addon) && $mode == 'addons') {
    # kornev, TOFIX generally this should be removed
    if (is_file($app_main_dir . '/addons/' . $addon . '/admin/settings.php')) {
        cw_include('addons/' . $addon . '/admin/settings.php');
    }
    if ($REQUEST_METHOD == 'POST') {
        cw_header_location("index.php?target={$target}&mode=addons&addon={$addon}");
    }
    $smarty->assign('addon', $addon);
    $smarty->assign('addon_name', cw_get_langvar_by_name('addon_name_' . $addon));
    $location[] = array(cw_get_langvar_by_name('lbl_addons'), 'index.php?target=' . $target);
    $location[] = array($addon, '');
    $smarty->assign('main', 'addon_settings');
} elseif (empty($addon)) {
    $addons = cw_addons_get();
    if (!isset($status) || empty($status)) {
        $status = constant('ADDON_TYPE_GENERAL');
    }
    foreach ($addons as $k => $v) {
        if ($v['status'] < $status) {
            unset($addons[$k]);
        }
    }
    $smarty->assign('addons', $addons);
    $location[] = array(cw_get_langvar_by_name('lbl_addons'), 'index.php?target=' . $target);
    $smarty->assign('main', 'addons');
}
function smarty_function_cw_order_statuses($params, &$smarty)
{
    global $tables, $config;
    $retval = "";
    $langvar_code = '{$lng.';
    $name_name = 'name';
    $statuses_list = cw_query("select os.* from {$tables['order_statuses']} os order by orderby, code");
    if ($params['mode'] == "select") {
        if ($params['multiple']) {
            $multiple_html = "multiple=\"multiple\"";
            $multiple_select_name_ext = "[]";
        }
        $retval .= "<select name=\"{$params['name']}{$multiple_select_name_ext}\" {$params['extra']} {$multiple_html}>";
        if ($params['extended'] != "") {
            $retval .= "<option value=\"\"></option>";
        }
    }
    $selected_status_codes = array();
    if (is_array($params['selected'])) {
        if ($params['normal_array']) {
            $selected_status_codes = $params['selected'];
        } else {
            $selected_status_codes = array_keys($params['selected']);
        }
    } else {
        $selected_status_codes = array($params['selected']);
    }
    foreach ($statuses_list as $st) {
        $selected_html = "";
        if (strpos($st[$name_name], $langvar_code) !== false) {
            $st[$name_name] = substr($st[$name_name], strlen($langvar_code));
            if (strpos($st[$name_name], '}') !== false) {
                $st[$name_name] = substr($st[$name_name], 0, strpos($st[$name_name], '}'));
            }
            $st[$name_name] = cw_get_langvar_by_name($st[$name_name]);
        } elseif (strpos($st[$name_name], 'lbl_') !== false) {
            $st[$name_name] = cw_get_langvar_by_name($st[$name_name]);
        }
        if (intval($st['deleted'])) {
            $deleted_text = cw_get_langvar_by_name('lbl_status_deleted');
        } else {
            $deleted_text = "";
        }
        if ($params['mode'] == "select") {
            if (in_array($st['code'], $selected_status_codes)) {
                $selected_html = "selected=\"selected\"";
            }
            if (!intval($st['deleted']) || !empty($selected_html)) {
                $retval .= "<option value=\"{$st['code']}\" {$selected_html}>" . $st[$name_name] . "{$deleted_text}</option>";
            }
        } elseif ($params['mode'] == "static") {
            if (in_array($st['code'], $selected_status_codes)) {
                $retval = $st[$name_name] . $deleted_text;
            }
        }
    }
    if ($params['mode'] == "select") {
        $retval .= "</select>";
    }
    return $retval;
}
<?php

// TODO: DELETE THIS CONTROLLER
if (!$addons['Gift_Registry']) {
    cw_header_location('index.php');
}
$access_status =& cw_session_register("access_status", array());
if ($mode == "preview") {
    $html_content = cw_query_first_cell("SELECT html_content FROM {$tables['giftreg_events']} WHERE event_id='{$eventid}'");
    if (!empty($html_content)) {
        echo $html_content;
    } else {
        echo "<br /><br /><br /><br /><h3 align=\"center\">" . cw_get_langvar_by_name("lbl_no_html_content", false, false, true) . "</h3>";
    }
    exit;
}
if (!empty($cc)) {
    # Confirm/Decline the participation by recipient
    # $cc - is a confirmation code passed via GET request
    cw_include('addons/Gift_Registry/giftreg_confirm.php');
}
if (!empty($eventid)) {
    if (!empty($wlid)) {
        if (cw_query_first_cell("SELECT event_id FROM {$tables['wishlist']} WHERE wishlist_id='{$wild}'") == $eventid) {
            $wlid_eventid =& cw_session_register("wlid_eventid");
            $wlid_eventid = $eventid;
            cw_session_save("wlid_eventid");
        }
    }
    cw_include('addons/Gift_Registry/event_guestbook.php');
    cw_include('addons/Gift_Registry/giftreg_display.php');
            $usertypes_array[$user_type . '_' . $val['membership_id']] = '';
            $membership_titles[$user_type . '_' . $val['membership_id']] = $val['membership'];
        }
    }
}
$smarty->assign('membership_titles', $membership_titles);
$smarty->assign('customer_memberships', $customer_memberships);
$smarty->assign('customer_memberships_count', count($customer_memberships));
# kornev, sort and add the sections if required.
if ($mode == 'fields') {
    list($sections, $fields, $additional_fields) = cw_profile_fields_get_sections('U', true, '', false, $edited_language);
} else {
    list($sections, $fields, $additional_fields) = cw_profile_fields_get_sections('U');
}
$smarty->assign('user_type', $user_type);
$smarty->assign('profile_sections', $sections);
$smarty->assign('profile_fields', $fields);
$smarty->assign('additional_fields', $additional_fields);
$smarty->assign('usertypes_array', $usertypes_array);
$smarty->assign('usertypes_array_count', count($usertypes_array));
$types = array('T' => 'Text', 'C' => 'Checkbox', 'M' => 'Multiple Checkbox', 'S' => 'Select box');
$smarty->assign('types', $types);
$smarty->assign('js_tab', $js_tab);
$location[] = array(cw_get_langvar_by_name('lbl_profile_fields'), '');
if ($mode == 'fields') {
    $location[] = array(cw_get_langvar_by_name('lbl_additional_fields'), '');
    $smarty->assign('main', 'user_profiles');
} else {
    $location[] = array(cw_get_langvar_by_name('lbl_user_type_' . $user_type), '');
    $smarty->assign('main', 'options');
}
        }
    } else {
        $top_message = array('content' => cw_get_langvar_by_name('err_filling_form'), 'type' => 'E');
        $nwslt_object =& cw_session_register('nwslt_object');
        $nwslt_object['fill_error'] = $fill_error;
        $nwslt_object['list'] = $list;
        cw_header_location("index.php?target={$target}&list_id=" . $list['list_id']);
    }
    cw_header_location("index.php?target={$target}&list_id=" . $list['list_id']);
}
$location[] = array(cw_get_langvar_by_name('lbl_news_management'), 'index.php?target=' . $target);
if (isset($_GET['list_id'])) {
    if (!empty($list_id)) {
        $list = cw_query_first("select * from {$tables['newslists']} WHERE list_id='{$list_id}'");
        if (empty($list['list_id'])) {
            $top_message['content'] = cw_get_langvar_by_name('msg_adm_err_newslist_not_exists');
            cw_header_location('index.php?target=' . $target);
        } else {
            if ($list['lngcode'] != $current_language && is_array($d_langs) && !in_array($list['lngcode'], $d_langs)) {
                cw_header_location("index.php?target={$target}&mode=modify&list_id={$list_id}&edit_lng={$list['lngcode']}&old_lng={$current_language}");
            }
        }
        $memberships = cw_query("select membership_id from {$tables['newslists_memberships']} where list_id='{$list['list_id']}'");
        if ($memberships) {
            foreach ($memberships as $val) {
                $list['memberships'][$val['membership_id']] = true;
            }
        }
        $list_idname = cw_query_first_cell("SELECT name FROM {$tables['newslists']} WHERE list_id='{$list_id}'");
        $smarty->assign('list_idname', $list_idname);
        $smarty->assign('list_id', $list_id);
<?php

# [TOFIX]
# kornev, fix the whole area - move to addon
define('AREA_TYPE', 'B');
$current_area = AREA_TYPE;
$customer_id =& cw_session_register('customer_id');
$top_message =& cw_session_register('top_message', array());
if (!empty($top_message)) {
    $smarty->assign('top_message', $top_message);
    $top_message = '';
}
cw_include('init/lng.php');
cw_include('include/check_useraccount.php');
cw_include('include/area_sections.php');
$smarty->assign('current_target', $target);
if (!$addons['salesman']) {
    cw_header_location($app_catalogs['customer']);
}
$location = array();
$location[] = array(cw_get_langvar_by_name('lbl_area_salesman'), 'index.php');
cw_call('cw_auth_security');
        if (is_array($zone_elements)) {
            foreach ($zone_elements as $k => $zone_element) {
                db_query("INSERT INTO {$tables['zone_element']} (zone_id, field, field_type) VALUES ('{$new_zone_id}', '" . addslashes($zone_element['field']) . "', '{$zone_element['field_type']}')");
            }
        }
        $top_message['content'] = cw_get_langvar_by_name("msg_zone_cloned");
    }
    cw_header_location('index.php?target=' . $target . '&zone_id=' . $new_zone_id);
}
$location[] = array(cw_get_langvar_by_name("lbl_destination_zones"), "");
if ($mode == "add" or !empty($zone_id)) {
    #
    # Display zone details page
    #
    $location[count($location) - 1][1] = "index.php?target=zones";
    $location[] = array(cw_get_langvar_by_name("lbl_zone_details"), "");
    if (!empty($zone_id)) {
        $zone = cw_query_first("SELECT * FROM {$tables['zones']} WHERE zone_id='{$zone_id}' {$zones_condition}");
    }
    if (empty($zone)) {
        $action = "add";
    }
    #
    # Countries in this zone and rest
    #
    $zone_countries = cw_query("SELECT {$tables['map_countries']}.code, {$tables['languages']}.value as country FROM {$tables['zone_element']}, {$tables['map_countries']}, {$tables['languages']} WHERE {$tables['zone_element']}.field_type='C' AND {$tables['zone_element']}.field={$tables['map_countries']}.code AND {$tables['languages']}.name = CONCAT('country_', {$tables['map_countries']}.code) AND {$tables['languages']}.code='{$current_language}' AND {$tables['map_countries']}.active=1 AND {$tables['zone_element']}.zone_id='{$zone_id}' ORDER BY country");
    $rest_countries = cw_query("SELECT {$tables['map_countries']}.code, {$tables['map_countries']}.region, {$tables['languages']}.value as country, {$tables['zone_element']}.zone_id FROM {$tables['languages']}, {$tables['map_countries']} LEFT JOIN {$tables['zone_element']} ON {$tables['zone_element']}.field_type='C' AND {$tables['zone_element']}.field={$tables['map_countries']}.code AND {$tables['zone_element']}.zone_id='{$zone_id}' WHERE {$tables['map_countries']}.active=1 AND {$tables['languages']}.name = CONCAT('country_', {$tables['map_countries']}.code) AND {$tables['languages']}.code='{$current_language}' AND zone_id IS NULL ORDER BY country");
    $rest_zones = array();
    if ($rest_countries) {
        foreach ($rest_countries as $v) {
            $rest_zones[$v['region']][] = $v['code'];
function dod_modify_bonuses($generator_id)
{
    global $tables, $bonus_names;
    global $dod_bonuses, $dod_bonus;
    if (empty($generator_id)) {
        $GLOBALS['_dod_bonuses'] =& $dod_bonuses;
        cw_session_register('_dod_bonuses');
        $GLOBALS['_dod_bonus'] =& $dod_bonus;
        cw_session_register('_dod_bonus');
        return array(true, null);
        //return array(false, 'generator Id was not provided');
    }
    db_query("DELETE FROM {$tables['dod_bonuses']} WHERE generator_id = '{$generator_id}'");
    db_query("DELETE FROM {$tables['dod_bonus_details']} WHERE generator_id = '{$generator_id}'");
    $available_fields = array('bonus_id' => 'int', 'generator_id' => 'int', 'type' => 'string', 'apply' => 'int', 'coupon' => 'string', 'discount' => 'float', 'disctype' => 'int');
    $excl_from_base_list = array('bonus_id');
    foreach ($excl_from_base_list as $field) {
        if (isset($available_fields[$field])) {
            unset($available_fields[$field]);
        }
    }
    $optional_fields = array('discount', 'disctype');
    $date_fields = array();
    $skip_striptags_fields = array();
    if (empty($dod_bonuses[DOD_DISCOUNT])) {
        $dod_bonuses[DOD_DISCOUNT] = 1;
        $unused_dod_discount_bonus = 1;
    } else {
        $unused_dod_discount_bonus = 0;
    }
    if (empty($dod_bonuses) || !is_array($dod_bonuses)) {
        return array(true, null);
    }
    $available_btypes = array(DOD_DISCOUNT, DOD_FREE_PRODS, DOD_FREE_SHIP, DOD_COUPON);
    $bonuses = array();
    foreach ($dod_bonuses as $bonus_type => $trash) {
        if (!isset($dod_bonus[$bonus_type]) || empty($dod_bonus[$bonus_type]) || !in_array($bonus_type, $available_btypes)) {
            unset($dod_bonuses[$bonus_type]);
        } else {
            $bonuses[$bonus_type] = $dod_bonus[$bonus_type];
        }
    }
    unset($dod_bonus);
    if (empty($dod_bonuses) || empty($bonuses)) {
        return array(true, null);
    }
    $GLOBALS['_dod_bonuses'] =& $dod_bonuses;
    cw_session_register('_dod_bonuses');
    $errors = array();
    $tmp_optional_fields = $optional_fields;
    foreach ($bonuses as $bonus_type => $input_data) {
        $optional_fields = $tmp_optional_fields;
        $additional_lang_data = array();
        $pids = $cids = array();
        $input_data['generator_id'] = $generator_id;
        $input_data['type'] = $bonus_type;
        if ($bonus_type != DOD_COUPON) {
            $input_data['coupon'] = 1;
            if ($input_data['apply'] == DOD_APPLY_PRODS || $bonus_type == DOD_FREE_PRODS || $bonus_type == DOD_DISCOUNT) {
                if (!isset($input_data['products']) && !isset($input_data['cats']) && !isset($input_data['mans']) && !isset($input_data['attr']) || empty($input_data['products']) && empty($input_data['cats']) && empty($input_data['mans']) && empty($input_data['attr'])) {
                    $additional_lang_data = array('bonus' => cw_get_langvar_by_name($bonus_names[$bonus_type]));
                    $errors[] = cw_get_langvar_by_name('msg_dod_bonus_incorrect', $additional_lang_data);
                    continue;
                }
                if (isset($input_data['products']) && !empty($input_data['products'])) {
                    $products_data = array();
                    foreach ($input_data['products'] as $product_data) {
                        $product_data['id'] = trim($product_data['id']);
                        $products_data[$product_data['id']] = $product_data['quantity'];
                    }
                    $pids = array_keys($products_data);
                    $pids = cw_query_column("SELECT product_id as id FROM {$tables['products']} WHERE product_id IN ('" . implode("','", $pids) . "')");
                }
                if (isset($input_data['cats']) && !empty($input_data['cats'])) {
                    $cats_data = array();
                    foreach ($input_data['cats'] as $cat_data) {
                        $cat_data['id'] = trim($cat_data['id']);
                        $cats_data[$cat_data['id']] = $cat_data['quantity'];
                    }
                    $cids = array_keys($cats_data);
                    $cids = cw_query_column("SELECT category_id as id FROM {$tables['categories']} WHERE category_id IN ('" . implode("','", $cids) . "')");
                }
                if (isset($input_data['mans']) && !empty($input_data['mans'])) {
                    $mids = array_values($input_data['mans']);
                }
                if (isset($input_data['attr'])) {
                    // Prepare attributes data
                    if (isset($input_data['attr']) && !empty($input_data['attr'])) {
                        $attr_data = array();
                        foreach ($input_data['attr'] as $a_data) {
                            $attr_data[trim($a_data['attribute_id'])] = array('quantity' => $a_data['quantity'], 'value' => current($a_data['value']), 'operation' => $a_data['operation']);
                        }
                        $attrids = array_keys($attr_data);
                        $attrids = cw_query_column("SELECT attribute_id as id FROM {$tables['attributes']} WHERE attribute_id IN ('" . implode("','", $attrids) . "')");
                    }
                }
                if (empty($pids) && empty($cids) && empty($mids) && empty($attrids)) {
                    $additional_lang_data = array('bonus' => cw_get_langvar_by_name($bonus_names[$bonus_type]));
                    $errors[] = cw_get_langvar_by_name('msg_dod_bonus_incorrect', $additional_lang_data);
                    continue;
                }
            }
        }
        if ($bonus_type != DOD_DISCOUNT && $bonus_type != DOD_FREE_SHIP) {
            $input_data['discount'] = $input_data['disctype'] = null;
        } elseif ($bonus_type == DOD_FREE_SHIP) {
            $input_data['disctype'] = null;
        } else {
            $optional_fields = array();
        }
        if (in_array($bonus_type, array(DOD_FREE_PRODS, DOD_COUPON))) {
            $optional_fields[] = 'apply';
        }
        $data = array();
        foreach ($date_fields as $field) {
            if (isset($input_data[$field]) && !empty($input_data[$field])) {
                $input_data[$field] = cw_core_strtotime($input_data[$field]);
            }
        }
        $error = null;
        foreach ($available_fields as $field => $field_type) {
            if (isset($input_data[$field])) {
                $result = settype($input_data[$field], $field_type);
                if ($result === false) {
                    $error = 'msg_dod_incorrect_field_type';
                    $additional_lang_data = array('field_name' => $field);
                    break;
                }
                if (empty($input_data[$field]) && !($bonus_type == DOD_DISCOUNT && $unused_dod_discount_bonus)) {
                    if (in_array($field, $optional_fields)) {
                        $data[$field] = null;
                    } else {
                        $additional_lang_data = array('bonus' => cw_get_langvar_by_name($bonus_names[$bonus_type]));
                        $error = 'msg_dod_bonus_incorrect';
                        break;
                    }
                } else {
                    if ($field_type == 'string' && !in_array($field, $skip_striptags_fields)) {
                        $input_data[$field] = cw_strip_tags($input_data[$field]);
                    }
                    $data[$field] =& $input_data[$field];
                }
            } else {
                if ($field_type == 'bool') {
                    $data[$field] = 0;
                } else {
                    if (in_array($field, $optional_fields)) {
                        $data[$field] = null;
                    } else {
                        $additional_lang_data = array('bonus' => cw_get_langvar_by_name($bonus_names[$bonus_type]));
                        $error = 'msg_dod_bonus_incorrect';
                        break;
                    }
                }
            }
        }
        if (!empty($error)) {
            $errors[] = cw_get_langvar_by_name($error, $additional_lang_data);
            continue;
        }
        if (empty($data)) {
            continue;
        }
        if ($data['type'] == DOD_DISCOUNT) {
            $data['unused'] = $unused_dod_discount_bonus;
        }
        $bonus_id = cw_array2insert($tables['dod_bonuses'], cw_addslashes($data));
        if ($bonus_type == DOD_FREE_SHIP) {
            foreach ($input_data['methods'] as $trash => $shipping_id) {
                $data = array('generator_id' => $generator_id, 'bonus_id' => $bonus_id, 'object_id' => $shipping_id, 'object_type' => DOD_OBJ_TYPE_SHIPPING);
                cw_array2insert($tables['dod_bonus_details'], cw_addslashes($data));
            }
        }
        if ($bonus_type != DOD_COUPON) {
            if ($input_data['apply'] == DOD_APPLY_PRODS || $bonus_type == DOD_FREE_PRODS || $bonus_type == DOD_DISCOUNT) {
                if (!empty($pids)) {
                    $data = array();
                    $data['generator_id'] = $generator_id;
                    $data['bonus_id'] = $bonus_id;
                    foreach ($pids as $pid) {
                        $data['object_id'] = $pid;
                        $data['object_type'] = DOD_OBJ_TYPE_PRODS;
                        $data['quantity'] = $products_data[$pid];
                        if (empty($data['quantity'])) {
                            $data['quantity'] = 1;
                        }
                        cw_array2insert($tables['dod_bonus_details'], cw_addslashes($data));
                    }
                }
                if (!empty($cids)) {
                    $data = array();
                    $data['generator_id'] = $generator_id;
                    $data['bonus_id'] = $bonus_id;
                    foreach ($cids as $cid) {
                        $data['object_id'] = $cid;
                        $data['object_type'] = DOD_OBJ_TYPE_CATS;
                        $data['quantity'] = $cats_data[$cid];
                        if (empty($data['quantity'])) {
                            $data['quantity'] = 1;
                        }
                        cw_array2insert($tables['dod_bonus_details'], cw_addslashes($data));
                    }
                }
                if (!empty($mids)) {
                    $data = array();
                    $data['generator_id'] = $generator_id;
                    $data['bonus_id'] = $bonus_id;
                    $data['quantity'] = 1;
                    foreach ($mids as $mid) {
                        $data['object_id'] = $mid;
                        $data['object_type'] = DOD_OBJ_TYPE_MANS;
                        cw_array2insert($tables['dod_bonus_details'], cw_addslashes($data));
                    }
                }
                // Save attributes to condition details
                if (!empty($attrids)) {
                    $data = array();
                    $data['generator_id'] = $generator_id;
                    $data['bonus_id'] = $bonus_id;
                    $data['quantity'] = 1;
                    foreach ($attrids as $aid) {
                        $data['object_id'] = $aid;
                        $data['object_type'] = DOD_OBJ_TYPE_ATTR;
                        $data['param1'] = $attr_data[$aid]['value'];
                        $data['param2'] = $attr_data[$aid]['operation'];
                        cw_array2insert($tables['dod_bonus_details'], cw_addslashes($data));
                    }
                }
            }
        }
        unset($bonuses[$bonus_type]);
    }
    if (!empty($bonuses)) {
        $GLOBALS['_dod_bonus'] =& $bonuses;
        cw_session_register('_dod_bonus');
    }
    if (!empty($errors)) {
        $error = implode("<br />\n", $errors);
        return array(false, $error);
    }
    return array(true, null);
}
function cw_pdf_generate($file, $template, $save_to_file = false, $landscape = false, $pages_limit = 0, $page_margins = array('10', '10', '10', '10'), $show_pages = true)
{
    global $smarty, $var_dirs, $current_location;
    set_time_limit(2700);
    ini_set('memory_limit', '512M');
    $smarty->assign('is_pdf', true);
    # kornev, only for A4 && 1024 p/wide
    $wcr = $hcr = 1024 / 210;
    $smarty->assign('wcr', $wcr);
    $smarty->assign('hcr', $hcr);
    if ($save_to_file && $file) {
        $html = $file;
    } else {
        $html = cw_display($template, $smarty, false);
    }
    parse_config_file(HTML2PS_DIR . 'html2ps.config');
    $pipeline = PipelineFactory::create_default_pipeline('', '');
    $pipeline->fetchers[] = new MyFetcherMemory($html, $current_location);
    if ($save_to_file) {
        $pipeline->destination = new MyDestinationFile($save_to_file);
    } else {
        $pipeline->destination = new DestinationDownload($file);
    }
    if ($show_pages) {
        $pipeline->pre_tree_filters[] = new PreTreeFilterHeaderFooter('', '<div>' . cw_get_langvar_by_name('lbl_page', null, false, true) . ' ##PAGE## / ##PAGES## </div>');
    }
    $pipeline->pre_tree_filters[] = new PreTreeFilterHTML2PSFields();
    $media =& Media::predefined('A4');
    $media->set_landscape($landscape);
    $media->set_margins(array('left' => $page_margins[3], 'right' => $page_margins[1], 'top' => $page_margins[0], 'bottom' => $page_margins[2]));
    $media->set_pixels(1024);
    $g_config = array('cssmedia' => 'print', 'scalepoints' => '1', 'renderimages' => true, 'renderlinks' => false, 'renderfields' => false, 'renderforms' => false, 'mode' => 'html', 'encoding' => '', 'debugbox' => false, 'pdfversion' => '1.4', 'smartpagebreak' => true, 'draw_page_border' => false, 'html2xhtml' => false, 'method' => 'fpdf', 'pages_limit' => $pages_limit);
    $pipeline->configure($g_config);
    $pipeline->process_batch(array(''), $media);
    if (!$save_to_file) {
        exit(0);
    }
}