/** * Get shares of the orders distributed between admin and sellers in case the payments go directly to sellers. * Shares are returned in absolute amounts, not as percentage * * @param array $cart * * @return * array( * [0] => <admin_share_amount>, * [seller1_id] => <seller_share_amount>, * [seller2_id] => <seller_share_amount>, * ) */ function cw_seller_get_payment_shares($cart) { global $config; $shares = array(0 => 0.0); foreach ($cart['orders'] as $order) { $seller = cw_call('cw_user_get_info', array($order['warehouse_customer_id'], 65535)); $seller['custom_fields'] = cw_user_get_custom_fields($seller['customer_id'], 0, '', 'field'); if (empty($seller) || $seller['usertype'] == 'A') { $seller['customer_id'] = 0; } if ($config['seller']['seller_enable_admin_commission_share'] == 'Y') { $admin_commision = $seller['custom_fields']['admin_commission_rate'] > 0 ? $seller['custom_fields']['admin_commission_rate'] : $config['seller']['seller_admin_commission_rate']; } else { $admin_commission = 0.0; } $shares[$seller['customer_id']] += $_seller_share = (1 - $admin_commision / 100) * $order['info']['total']; $shares[0] += $order['info']['total'] - $_seller_share; } cw_log_add('seller_shares', $shares); return $shares; }
function cw_log_flag($flag_key, $label, $message, $add_backtrace = false, $stack_skip = 0) { static $email_addresses = false; global $config; if ($email_addresses === false && isset($config['Logging']['email_addresses'])) { $email_addresses = array_unique(explode('[ ,]+', $config['Logging']['email_addresses'])); } $do_log = empty($config); $addresses = false; $do_email = false; if (isset($config['Logging'][$flag_key])) { $value = $config['Logging'][$flag_key]; $do_log = strpos($value, 'L') !== false; $do_email = strpos($value, 'E') !== false; } if ($do_email) { $addresses = $email_addresses; } if ($do_log || $do_email) { cw_log_add($label, $message, $add_backtrace, $stack_skip + 1, $addresses, $do_email && !$do_log); } }
} } } if ($server_filenames) { foreach ($server_filenames as $s_file) { $profile['file_name'] = fi_files_path . $s_file; $parsed_file = cw_call('cw_flexible_import_parse_file', array($profile, false)); if ($parsed_file['err']) { break; } } } else { $profile['import_file'] = $_FILES['import_file']; $parsed_file = cw_call('cw_flexible_import_parse_file', array($profile, false)); } cw_log_add("flexible_import", array("Import started", "parsed_file" => $parsed_file, "profile" => $profile, "mapping_data" => $mapping_data)); $load_data_tables_qry = array(); foreach ($mapping_data as $import_section_name => $tbl_map) { $table_name = "tmp_load_{$import_section_name}"; $table_key_name = "id_" . strtolower($import_section_name); $load_data_tables_qry[] = "DROP TABLE IF EXISTS `{$table_name}`;"; $add_field_qry = array(); $field_names = array(); $tmp_fields = array(); foreach ($tbl_map as $col_id => $col_data) { $_dname = $col_id; //$col_data['imp_field']; if (!empty($csvxc_field_types[$_dname])) { $add_field_qry[] = "`{$_dname}` " . $csvxc_field_types[$_dname]; } else { if (isset($csvxc_field_types["default_{$import_section_name}"])) {
function cw_array2update_esc($tab, $arr, $where = '') { foreach ($arr as $k => $v) { if (preg_match("'\\''", $v)) { $arr[$k] = addslashes($v); } } print "u "; /* print("<br>"); print_r(array($tab,$arr,$where)); print("<br>\n"); return;*/ cw_log_add("import_xcart", array("update", $tab, $arr, $where)); return cw_array2update($tab, $arr, $where); }
} } if ($config['google_base']['gb_file_format'] == 'xml') { cw_gb_write_xml($file, $data); } else { cw_gb_write_csv($file, $data); } fclose($file); } if (defined('GB_XML_OUT') && constant('GB_XML_OUT')) { // header('Content-type: text/plain'); header('Content-type: text/' . $config['google_base']['gb_file_format']); echo file_get_contents($_filename); } $result = count($data); if ($success) { $top_message = array('content' => 'The products have been exported successfully', 'type' => 'I'); if (!empty($warnings)) { cw_log_add('google_base', $warnings); $top_message = array('content' => implode('<br />', array_slice($warnings, 0, 10)) . '...', 'type' => 'W'); } $success_msg = "Google Base <a href='{$http_location}/{$_filename}'>file</a> updated, records count: {$result}"; cw_call('cw_system_messages_add', array('google_base', $success_msg, SYSTEM_MESSAGE_COMMON, SYSTEM_MESSAGE_INFO)); } else { $top_message = array('content' => cw_get_langvar_by_name('msg_err_file_permission_denied'), 'type' => 'E'); $warn_msg = "Google Base. <acronym title='{$_filename}'>" . cw_get_langvar_by_name('msg_err_file_permission_denied') . '</acronym>'; cw_call('cw_system_messages_add', array('google_base', $warn_msg, SYSTEM_MESSAGE_COMMON, SYSTEM_MESSAGE_WARNING)); cw_call('cw_system_messages_show', array('google_base')); } unset($data, $xml, $items); return $result;
$_log .= "[REQUEST {$xml_id}]:\n\n" . $xml_data['xml_request'] . "\n\n"; $request = $server . "?API=" . $data['api'] . "&XML=" . urlencode($xml_data['xml_request']); $_log .= "[SEND REQUEST TO URL]:\n\n" . $request . "\n\n"; # Sending secure GET request to USPS (for first-type image) list($header, $return) = cw_https_request("GET", $request); $_log .= "[RESPONSE]:\n\n" . $header . "\n\n" . $return . "\n\n"; # Parcing first USPS response $response = cw_usps_parce_result($return, $data['xml_head'], $xml_data['file_type']); if ($response['error'] && $response['error_code'] != $xml_data['ignore']) { $error[$method . " #" . $xml_id] = $response['data']; } if ($response['error']) { $_log .= "[ERROR]:\n\n" . $method . " " . $xml_id . " = " . $response['data'] . "\n\n"; } else { # Saving labels or messages cw_usps_save_response($response, $method, $xml_id); } } } if (defined('USPS_DEBUG')) { cw_log_add('usps', $_log); } $status =& cw_session_register("status"); $error =& cw_session_register("error"); if (!empty($error)) { $status = "E"; // Error } else { $status = "S"; // Success }
function db_error_generic($query, $query_error, $msg) { global $config; $email = false; if (@$config['Email']['admin_sqlerror_notify'] == "Y") { $email = array($config['Company']['site_administrator']); } if (DEBUG_MODE == 1 || DEBUG_MODE == 3) { echo '<div>INVALID SQL:' . htmlspecialchars($query_error) . "</div>\n"; echo '<div>SQL QUERY FAILURE:' . htmlspecialchars($query) . "</div>\n"; print_r(cw_get_backtrace()); flush(); } $do_log = DEBUG_MODE == 2 || DEBUG_MODE == 3; if ($email !== false || $do_log) { cw_log_add('SQL', $msg, true, 1, $email, !$do_log); } }
<POZipCode></POZipCode> <ImageType>{$image_type}</ImageType> <LabelDate></LabelDate> <CustomerRefNo></CustomerRefNo> <AddressServiceRequested></AddressServiceRequested> <SenderName></SenderName> <SenderEMail></SenderEMail> <RecipientName></RecipientName> <RecipientEMail></RecipientEMail> </{$xml_head}> EOT; } $query_prepared = urlencode($query); list($header, $return) = cw_https_request("GET", $usps_server . "?API={$api}&XML=" . $query_prepared); if (defined('USPS_DEBUG')) { cw_log_add('usps', $query . "\n\n" . $header . "\n\n" . $return); } $response = array("result" => 'http_error'); $res = cw_xml2hash($return); if ($res['Error']) { $response['result'] = 'error'; $response['error'] = $res['Error']['Description']; } elseif ($res[$head . 'Response']) { $response['result'] = 'ok'; if ($service_type == "GlobalAir" || $service_type == "GlobalExpress" || $service_type == "GlobalPriority") { $response['image'] = base64_decode(str_replace(array("\n"), array(""), $res[$head . 'Response']['LabelImage'])); } elseif ($service_type == "ExpressMail") { $response['image'] = base64_decode(str_replace(array("\n"), array(""), $res[$head . 'Response']['EMLabel'])); } else { $response['image'] = base64_decode(str_replace(array("\n"), array(""), $res[$head . 'Response']['DeliveryConfirmationLabel'])); }
foreach ($tasks as $task => $period) { if ($period == 'regular' || $executed == 0) { $log[$task] = cw_event($task, array($time, $last_run[$period])); if (empty($log[$task])) { $log[$task] = null; } unset($tasks[$task]); } if ($period != 'regular') { $executed++; } } $last_run['queue'] = $tasks; // Old fashion cron handlers are files in cron folder $targets = cw_func_call('cw_cron_get_targets', array('time' => $time_dump, 'hour' => $hour, 'minute' => $minute, 'manual_run' => $manual_run)); foreach ($targets as $target) { $log['include:' . $target] = cw_include($area . '/' . $target . '.php'); } } else { $log[$manual_run] = cw_call($manual_run, array($time, $time)); $log['include:' . $manual_run] = cw_include($area . '/' . $manual_run . '.php'); } $last_run['flag'] = 0; // Cron finished db_query("REPLACE {$tables['config']} (name, config_category_id, value) values ('last_cron_run',1,'" . mysql_real_escape_string(serialize($last_run)) . "')"); cw_system_messages_delete('cron_not_finished'); $log['end'] = '#' . $counter . ': Cron ended at ' . date('H:i:s', time()); cw_log_add('cron', $log, false); cw_call('cw_system_messages_delete', array('crontab_warning')); exit(0); // do not return back to display functions
} elseif (0 && !$is_verified) { $bill_output["code"] = 2; $bill_message = "Declined (invalid request)"; } elseif (in_array($payment_status, array('CREATED', 'INCOMPLETE', 'COMPLETED', 'PROCESSING', 'PENDING'))) { $bill_output["code"] = $payment_status == 'COMPLETED' ? 1 : 3; $bill_message = $payment_status == 'COMPLETED' ? 'Accepted' : 'Queued'; $tx = explode('&', urldecode($txt)); sort($tx); foreach ($tx as $ti => $tv) { if (!preg_match("/^transaction\\[\\d+\\]/", $tv)) { unset($tx[$ti]); } } $txinfo = "\n" . join("\n", $tx); # &memo=293%2C294%2110& .. &sender_email=us_buyer%40shabaev.com& cw_log_add('pp_adapt_email', array($_POST["memo"], $_POST["sender_email"])); $memo_parts = explode("!", $_POST["memo"]); if (is_array($memo_parts)) { $memo_doc_ids = $memo_parts[0]; if (!empty($memo_doc_ids)) { $memo_doc_ids_arr = explode(",", $memo_doc_ids); foreach ($memo_doc_ids_arr as $memo_doc_id) { cw_array2insert('paypal_adaptive_doc_accounts', array('doc_id' => $memo_doc_id, 'email' => $_POST["sender_email"]), true); } } } /* if (!strcasecmp($payment_status, "Pending")) { $bill_message = "Queued"; $bill_output["code"] = 3;
} } list($message_header, $mail_message) = cw_parse_mail($msgs); $mail_from = $from; if ($config['Email']['use_base64_headers'] == "Y") { $mail_subject = cw_mail_quote($mail_subject, $charset); } $headers = "From: " . $mail_from . $lend . "X-Mailer: PHP/" . phpversion() . $lend . "MIME-Version: 1.0" . $lend . $message_header; if (trim($mail_from) != "") { $headers .= 'Reply-to: ' . $mail_from . $lend; } $mail_result = false; if ($config['Email']['use_smtp'] == "Y") { $mail_data = array('from' => $mail_from, 'send_to' => $to, 'subject' => $mail_subject, 'body' => $orig_mail_message, 'alt_body' => $plain_mail_message); $mail_result = cw_smtp_send_mail($mail_data, $config['Email']['smtp_debug_enabled'] == 'Y' ? 2 : 0); cw_log_add('phpmailer_sent', $mail_data); } else { if (preg_match('/([^ @,;<>]+@[^ @,;<>]+)/S', $from, $m)) { $mail_result = mail($to, $mail_subject, $mail_message, $headers, "-f" . $m[1]); } else { $mail_result = mail($to, $mail_subject, $mail_message, $headers); } } if ($mail_result) { cw_log_add('cron', "Email sent: {$to} - {$mail_subject}", false); } else { cw_log_add('email_errors', "Could not send email #{$mail['mail_id']}: {$to} - {$mail_subject}"); } db_query("delete from {$tables['mail_spool']} where mail_id='{$mail['mail_id']}'"); $end_time = cw_core_get_time(); }
/** * Trigger a PEAR error * * To improve performances, the PEAR.php file is included dynamically. * The file is so included only when an error is triggered. So, in most * cases, the file isn't included and perfs are much better. * * @param string $msg error message * @param int $code error code * @access public */ function raiseError($msg, $code) { // include_once('PEAR.php'); // return PEAR::raiseError($msg, $code, $this->_pearErrorMode); cw_log_add('cache_lite', array('msg' => $msg, 'code' => $code, 'pearErrorMode' => $this->_pearErrorMode)); return ''; }
<?php /** * Show or log bench result */ if (!empty($__bench) && (constant('BENCH_DISPLAY') || constant('BENCH_LOG'))) { $smarty->assign('bench_max_memory', memory_get_peak_usage(true)); $smarty->assign_by_ref('bench', $__bench); if (constant('BENCH_LOG')) { for ($i = 1; $i < $__bench_counter; $i++) { $__bench_timelog[strval($__bench[$i]['start_time'] - $__start_mictotime)] = $i; $__bench_timelog[strval($__bench[$i]['end_time'] - $__start_mictotime)] = -1 * $i; } ksort($__bench_timelog, SORT_NUMERIC); $smarty->assign_by_ref('bench_timelog', $__bench_timelog); } if (constant('BENCH_DISPLAY')) { $smarty->display($app_dir . '/' . $app_skin_dir . '/debug/bench.tpl'); } if (constant('BENCH_LOG')) { cw_log_add('bench_exec', $smarty->fetch($app_dir . '/' . $app_skin_dir . '/debug/bench2.tpl')); } }
/** * cw_smtp_send_mail sends email via SMTP PHPmailer library * * @param * mail_data = array( * from - 'sent from' email address, optional, default value: $config['Email']['smtp_mail_from'] * from_name - 'Sent from' person name, optional * send_to - recepient email address, required * send_to_name - recepient person name, optional * subject - email subject, required * body - email body, required * alt_body - alternative body, optional * * @return boolean */ function cw_smtp_send_mail($mail_data, $dbg_level = 0) { global $config, $app_main_dir; include_once $app_main_dir . '/include/lib/PHPmailer/class.phpmailer.php'; include_once $app_main_dir . '/include/lib/PHPmailer/class.smtp.php'; $result = 0; $mail = new PHPMailer(); $mail->isSMTP(); //Enable SMTP debugging // 0 = off (for production use) // 1 = client messages // 2 = client and server messages $mail->SMTPDebug = $dbg_level; //Ask for HTML-friendly debug output if ($dbg_level) { $mail->Debugoutput = 'html'; } //Set the hostname of the mail server $mail->Host = $config['Email']['smtp_server']; //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission $mail->Port = $config['Email']['smtp_port']; //Set the encryption system to use - ssl (deprecated) or tls if ($config['Email']['smtp_use_tlc_connect'] == "Y") { $mail->SMTPSecure = 'tls'; } //Whether to use SMTP authentication $mail->SMTPAuth = true; //Username to use for SMTP authentication - use full email address for gmail $mail->Username = $config['Email']['smtp_username']; //Password to use for SMTP authentication $mail->Password = $config['Email']['smtp_password']; //Set who the message is to be sent from if ($config['Email']['smtp_mail_from_force'] != 'Y') { $mail_from = empty($mail_data['from']) ? $config['Email']['smtp_mail_from'] : $mail_data['from']; } else { $mail_from = $config['Email']['smtp_mail_from']; } $mail->setFrom($mail_from, $mail_data['from_name']); $mail->addAddress($mail_data['send_to'], $mail_data['send_to_name']); //Set the subject line $mail->Subject = $mail_data['subject']; //Read an HTML message body from an external file, convert referenced images to embedded, //convert HTML into a basic plain-text alternative body $mail->msgHTML($mail_data['body'], dirname(__FILE__)); //Replace the plain text body with one created manually if (!empty($mail_data['alt_body'])) { $mail->AltBody = $mail_data['alt_body']; } //send the message, check for errors if (!$mail->send()) { cw_log_add("phpmailer", $mail->ErrorInfo); } else { $result = 1; } $mail->smtpClose(); return $result; }
function cw_product_stages_send_emails() { global $tables, $smarty, $config; cw_load('doc'); //select all active product stages settings $stages_settings = cw_query("select ps.title, ps.default_status, ps.default_period, ps.subject, ps.body, psp.* from {$tables['product_stages_product_settings']} psp inner join {$tables['product_stages_library']} ps on ps.stage_lib_id=psp.stage_lib_id where psp.active=1"); foreach ($stages_settings as $stage_setting) { $stage_statuses = array(); if (!empty($stage_setting['status']) && $stage_setting['status'] != -1) { $stage_statuses = unserialize($stage_setting['status']); } elseif ($stage_setting['status'] == -1 && !empty($stage_setting['default_status'])) { $stage_statuses = unserialize($stage_setting['default_status']); } if (empty($stage_statuses)) { continue; } if ($stage_setting['period'] != -1) { $stage_period = $stage_setting['period']; } else { $stage_period = $stage_setting['default_period']; } $smarty->assign('stage_message_subject', $stage_setting['subject']); $smarty->assign('stage_message_body', $stage_setting['body']); //find all ordered products which have been bought within stage period and which are linked to current stage_setting $date_past = cw_product_stages_date_in_past($stage_period); $ordered_items = cw_query($s = "select di.* from {$tables['docs_items']} di inner join {$tables['docs']} d on d.doc_id=di.doc_id and d.date >= '{$date_past}' where di.product_id = '{$stage_setting['product_id']}'"); //print("$s <br/>\n"); foreach ($ordered_items as $doc_item) { $doc_data = array(); //get status change history $status_log = cw_query("select * from {$tables['docs_statuses_log']} where doc_id='{$doc_item['doc_id']}' and status in ('" . implode("','", $stage_statuses) . "')"); foreach ($status_log as $st_log) { $days_passed = cw_product_stages_days_passed($st_log['date']); if ($days_passed >= $stage_period) { $stage_is_processed = cw_query_first_cell("select count(*) from {$tables['product_stages_process_log']} where setting_id='{$stage_setting['setting_id']}' and doc_item_id='{$doc_item['item_id']}' and status='{$st_log['status']}'"); if (!$stage_is_processed) { $smarty->assign('stage_status', $st_log['status']); $smarty->assign('stage_status_date', $st_log['date']); if (empty($doc_data)) { $doc_data = cw_doc_get($doc_item['doc_id'], 8192); $smarty->assign('info', $doc_data['info']); $smarty->assign('products', $doc_data['products']); $smarty->assign('order', $doc_data); $smarty->assign('doc', $doc_data); $smarty->assign('userinfo', $doc_data['userinfo']); cw_log_add('stage_process', array($st_log, $stage_setting, $doc_data)); } cw_call('cw_send_mail', array($config['Company']['orders_department'], $doc_data['userinfo']['email'], 'addons/product_stages/mail/stage_notification_subj.tpl', 'addons/product_stages/mail/stage_notification.tpl')); cw_array2insert('product_stages_process_log', array('setting_id' => $stage_setting['setting_id'], 'doc_item_id' => $doc_item['item_id'], 'status' => $st_log['status'], 'date' => time())); } } } } } }
function GetAccessToken(&$access_token) { if (!$this->session_started && !session_start()) { return $this->SetPHPError('it was not possible to start the PHP session', $php_error_message); } $this->session_started = true; $mslive_login_session =& cw_session_register('mslive_login_session', array()); if (isset($mslive_login_session['OAUTH_ACCESS_TOKEN'][$this->access_token_url])) { $access_token = $mslive_login_session['OAUTH_ACCESS_TOKEN'][$this->access_token_url]; } else { $access_token = array(); } cw_log_add('mslive', array('get access_token' => $access_token)); return true; }
if ($success = $linkedin_login_client->Initialize()) { if ($success = $linkedin_login_client->Process()) { if (strlen($linkedin_login_client->authorization_error)) { $linkedin_login_client->error = $linkedin_login_client->authorization_error; $success = false; } elseif (strlen($linkedin_login_client->access_token)) { $success = $linkedin_login_client->CallAPI('https://api.linkedin.com/v1/people/~', 'GET', array('format' => 'json'), array('FailOnAccessError' => true), $user); /* * Use this if you just want to get the LinkedIn user email address */ $success = $linkedin_login_client->CallAPI('https://api.linkedin.com/v1/people/~/email-address', 'GET', array('format' => 'json'), array('FailOnAccessError' => true), $linkedin_email); } } $success = $linkedin_login_client->Finalize($success); } cw_log_add('linkedin_login', array($linkedin_email, $user, $success)); if ($success) { //For logged in user, get details from linkedin using access token $linkedin_user_id = md5($linkedin_email); // $linkedin_uname = $user->firstName . ' ' . $user->lastName; $linkedin_user_firstname = $user->firstName; $linkedin_user_lastname = $user->lastName; cw_load('user'); $user_data = cw_query_first("SELECT {$tables['customers']}.*\n FROM {$tables['customers']} \n WHERE oauth_uid='" . $linkedin_user_id . "' AND oauth_type='L' \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'); if (!empty($linkedin_login_info['return_url'])) { cw_header_location($linkedin_login_info['return_url']);
function cw_doc_place_order($params, $return = null) { extract($params); global $cart, $discount_coupon, $smarty, $config, $addons, $salesman, $adv_campaign_id, $salesman_click_id; global $tables, $to_customer; global $wlid; global $app_main_dir, $REMOTE_ADDR, $PROXY_IP, $CLIENT_IP, $add_to_cart_time; $mintime = 10; cw_load('web'); cw_lock('cw_doc_place_order'); $doc_ids = array(); foreach ($cart['orders'] as $cart_order_idx => $current_order) { # $extra - one serialized field in doc details # use $extra as storage of details which will not be used for orders search or aggregate # $extras - key=>value pairs in doc extras table # use $extras for scalar values which can be used in SQL queries $extra = cw_event('on_place_order_extra', array($current_order)); $extra['additional_fields'] = $userinfo['additional_fields']; if (!empty($current_order['info']['shipping_no_offer'])) { $extra['shipping_no_offer'] = $current_order['info']['shipping_no_offer']; } $extras = cw_event('on_place_order_extras', array($current_order)); //$extras['ip'] = $CLIENT_IP; //$extras['proxy_ip'] = $PROXY_IP; # kornev, each doc has got the same attributes as the other elements, like products # kornev, the attributes should be defined in the params by the pre function $doc_id = cw_doc_create_empty($order_type, array('warehouse_customer_id' => $current_order['warehouse_customer_id']), $params['prefix'], array(), $return['attributes']); $cart['orders'][$cart_order_idx]['created_doc_id'] = $doc_id; $extra['tax_info'] = array('display_taxed_order_totals' => $config['Taxes']['display_taxed_order_totals'], 'display_cart_products_tax_rates' => $config['Taxes']['display_cart_products_tax_rates'] == "Y", 'taxed_subtotal' => $current_order['display_subtotal'], 'taxed_discounted_subtotal' => $current_order['display_discounted_subtotal'], 'taxed_shipping' => $current_order['display_shipping_cost']); $giftcert_discount = $current_order['info']['giftcert_discount']; $applied_taxes = addslashes(serialize($current_order['info']['taxes'])); $discount_coupon = $current_order['coupon']; if (!empty($current_order['coupon'])) { $current_order['coupon'] = cw_query_first_cell("SELECT coupon_type FROM {$tables['discount_coupons']} WHERE coupon='" . addslashes($current_order['coupon']) . "'") . "``" . $current_order['coupon']; } $current_order['userinfo'] = $userinfo; $current_order['new'] = true; // Flag can be used in cw_doc_update to differ just placed empty doc from update of existing doc $current_order['info']['shipping_id'] = $cart['info']['shipping_id']; $current_order['info']['payment_id'] = $cart['info']['payment_id']; $current_order['info']['payment_label'] = $cart['info']['payment_label']; $current_order['info']['quote_doc_id'] = isset($cart['info']['quote_doc_id']) ? $cart['info']['quote_doc_id'] : null; $current_order['info']['details'] = addslashes(cw_crypt_text($order_details)); $current_order['info']['customer_notes'] = addslashes($customer_notes); if ($config['Appearance']['show_cart_summary'] == 'Y') { $current_order['info']['shipping_id'] = $cart['info']['shipping_arr'][$current_order['warehouse_customer_id']]; } $current_order['info']['extra'] = $extra; $current_order['info']['extras'] = $_extras; $current_order['status'] = $order_status; $doc_info = cw_doc_get_basic_info($doc_id); $current_order['info']['doc_info_id'] = $doc_info['doc_info_id']; $current_order['info']['warehouse_customer_id'] = $current_order['warehouse_customer_id']; $current_order['userinfo']['main_address']['address_id'] = $doc_info['main_address_id']; $current_order['userinfo']['current_address']['address_id'] = $doc_info['current_address_id']; cw_log_add('doc_placed', array('doc_id' => $doc_id, 'current_order' => $current_order, 'cart' => $cart)); cw_call('cw_doc_update', array($doc_id, $current_order)); $doc_ids[] = $doc_id; $order = cw_call('cw_doc_get', array($doc_id)); if ($discount_coupon) { // artem, TODO: no SQL $_per_user = cw_query_first_cell("SELECT per_user FROM {$tables['discount_coupons']} WHERE coupon='{$discount_coupon}' LIMIT 1"); if ($_per_user == "Y") { $_need_to_update = cw_query_first_cell("SELECT COUNT(*) FROM {$tables['discount_coupons_login']} WHERE coupon='{$discount_coupon}' AND customer_id='" . intval($userinfo['customer_id']) . "' LIMIT 1"); if ($_need_to_update > 0) { db_query("UPDATE {$tables['discount_coupons_login']} SET times_used=times_used+1 WHERE coupon='{$discount_coupon}' AND customer_id='" . intval($userinfo['customer_id']) . "'"); } else { db_query("INSERT INTO {$tables['discount_coupons_login']} (coupon, customer_id, times_used) VALUES ('{$discount_coupon}', '" . intval($userinfo['customer_id']) . "', '1')"); } } else { db_query("UPDATE {$tables['discount_coupons']} SET times_used=times_used+1 WHERE coupon='{$discount_coupon}'"); db_query("UPDATE {$tables['discount_coupons']} SET status='U' WHERE coupon='{$discount_coupon}' AND times_used=times"); } $discount_coupon = ""; } # Mail template processing $admin_notify = $order_status == "Q" && $config['Email']['enable_order_notif'] == "Y" || $order_status == "I" && $config['Email']['enable_init_order_notif'] == "Y"; $customer_notify = $order_status == "Q" || $order_status == "I" && $config['Email']['enable_init_order_notif_customer'] == "Y"; $doc_data = $doc_data_customer = cw_call('cw_doc_get', array($doc_id)); if ($customer_notify) { $to_customer = $userinfo['language'] ? $userinfo['language'] : $config['default_customer_language']; $doc_data_customer['products'] = cw_doc_translate_products($doc_data['products'], $to_customer); $smarty->assign('doc_data', $doc_data_customer); if ($doc_data['info']['layout_id']) { $layout = cw_web_get_layout_by_id($doc_data['info']['layout_id']); } else { $layout = cw_call('cw_web_get_layout', array('docs_' . $doc_data['type']), true); } $smarty->assign('layout_data', $layout); $smarty->assign('info', $doc_data['info']); $smarty->assign('products', $doc_data_customer['products']); $smarty->assign('order', $doc_data); $smarty->assign('doc', $doc_data); $smarty->assign('is_email_invoice', 'Y'); cw_call('cw_send_mail', array($config['Company']['orders_department'], $userinfo['email'], 'mail/docs/customer_subj.tpl', 'mail/docs/customer.tpl', null, false, true)); $smarty->assign('is_email_invoice', 'N'); } if ($admin_notify) { # Notify orders department by email $smarty->assign('doc_data', $doc_data); $smarty->assign('usertype_layout', 'A'); $smarty->assign('is_email_invoice', 'Y'); cw_call('cw_send_mail', array($userinfo['email'], $config['Company']['orders_department'], 'mail/docs/admin_subj.tpl', 'mail/docs/admin.tpl', $config['default_admin_language'], true)); $smarty->assign('is_email_invoice', 'N'); $smarty->assign('usertype_layout', ''); # Notify warehouse (or warehouses) by email if ($config['Email']['send_notifications_to_warehouse'] == "Y") { $pr_result = cw_query_first("SELECT email, language FROM {$tables['customers']} WHERE customer_id='{$current_order['warehouse_customer_id']}'"); $prov_email = $pr_result['email']; if ($prov_email != $config['Company']['orders_department']) { $to_customer = $pr_result['language']; if (empty($to_customer)) { $to_customer = $config['default_admin_language']; } $smarty->assign('is_email_invoice', 'Y'); cw_call('cw_send_mail', array($userinfo['email'], $prov_email, 'mail/docs/admin_subj.tpl', 'mail/docs/admin.tpl')); $smarty->assign('is_email_invoice', 'N'); } } } if ($addons['survey'] && AREA_TYPE == 'C') { cw_load('surveys'); cw_check_surveys_events("OPL", $doc_data); } //cw_call('cw_doc_save_history_totals_by_customer', array(array(intval($userinfo['customer_id'])))); cw_call('cw_doc_save_history_categories', array(array($doc_id))); cw_call('cw_doc_save_history_attributes', array(array($doc_id))); } # Send notifications to orders department and warehouses when product amount in stock is low foreach ($cart['products'] as $product) { if (!empty($product['distribution']) && $addons['egoods']) { continue; } # kornev, TOFIX if ($addons['product_options'] && $product['extra_data']['product_options']) { $avail_now = cw_get_options_amount($product['extra_data']['product_options'], $product['product_id']); } else { $avail_now = cw_query_first_cell("SELECT avail FROM {$tables['products_warehouses_amount']} WHERE product_id='" . $product['product_id'] . "' AND warehouse_customer_id ='" . $product['warehouse_customer_id'] . "'"); } if ($product['low_avail_limit'] >= $avail_now && $config['Email']['eml_lowlimit_warning'] == 'Y') { # Mail template processing $product['avail'] = $avail_now; $smarty->assign('product', $product); cw_call('cw_send_mail', array($config['Company']['orders_department'], $config['Company']['orders_department'], 'mail/lowlimit/subj.tpl', 'mail/lowlimit/body.tpl')); $pr_result = cw_query_first("SELECT email, language FROM {$tables['customers']} WHERE customer_id='" . $product['warehouse_customer_id'] . "'"); } } cw_unlock('cw_doc_place_order'); return $doc_ids; }
exit; } elseif (strcasecmp($payment_status, "Refunded") == 0) { # Register Refund transaction if (!empty($parent_txn_id)) { $doc_ids = cw_payment_get_docs_by_transaction($parent_txn_id); foreach ($doc_ids as $doc_id) { cw_call('cw_doc_place_extras_data', array($doc_id, array('capture_status' => 'R', 'refund_txnid' => $txn_id))); } } if (constant('PP_STD_DBG')) { cw_log_add('paypal_std', array('callback Refunded', $doc_ids), false); } exit; } else { $bill_message = "Declined"; $bill_output["code"] = 2; } $bill_output["billmes"] = "{$bill_message} Status: {$payment_status} (TransID #{$txn_id})"; if (!empty($pending_reason)) { $bill_output["billmes"] .= " Reason: {$pending_reason}"; } cw_call('cw_payment_put_data', array($skey, array('billmes' => $bill_output["billmes"]))); if (constant('PP_STD_DBG')) { cw_log_add('paypal_std', array('callback end', $bill_output), false); } $return = cw_call('cw_payment_check_results', array($bill_output)); if (constant('PP_STD_DBG')) { cw_log_add('paypal_std', array('callback stop', $return), false); } cw_call('cw_payment_stop', array($return)); }
function cw_survey_onsend_handler($row, $survey_id) { cw_log_add("invitation", date("m/d/Y H:i:s") . " invitaion sent: " . $row['email']); }
function cw_http_test_bouncer($force = false) { global $config; global $var_dirs; static $module_active = null; if (!$force && !is_null($module_active)) { return $module_active; } $bouncers = array('libcurl', 'curl', 'openssl', 'ssleay', 'httpscli'); if ($config['General']['httpsmod']) { array_unshift($bouncers, $config['General']['httpsmod']); } $result = false; foreach ($bouncers as $k => $bouncer) { $fn = "cw_http_test_{$bouncer}"; if (function_exists($fn) && $fn()) { $result = $bouncer; break; } } $old_module = false; $data_file = $var_dirs['log'] . "/data.httpsmodule.php"; if (file_exists($data_file)) { ob_start(); readfile($data_file); $old_module = ob_get_contents(); ob_end_clean(); $old_module = substr($old_module, strlen(LOG_PHP_SIGNATURE)); } if (!empty($old_module) && strcmp($old_module, $result)) { cw_log_add('ENV', "HTTPS module is changed to: {$result} (was: {$old_module})"); } if ($old_module === false || strcmp($old_module, $result)) { $_tmp_fp = @fopen($data_file, "wb"); if ($_tmp_fp !== false) { @fwrite($_tmp_fp, LOG_PHP_SIGNATURE . $result); @fclose($_tmp_fp); } } $module_active = $result; return $result; }
function cw_order_messages_get_emails($time, $prev_time) { global $tables, $config; global $take_messages_debug; /* $config['order_messages']['contact_email_access_info'] = '{pop.gmail.com:995/novalidate-cert/pop3/ssl}INBOX'; */ $mail = imap_open($config['order_messages']['contact_email_access_info'], $config['order_messages']['contact_email_address'], $config['order_messages']['contact_email_password']); /*cw_log_add("order_messages_get_emails",array('contact_email_access_info'=>$config['order_messages']['contact_email_access_info'], 'contact_email_address'=>$config['order_messages']['contact_email_address'], 'contact_email_password'=>'--hidden--'));*/ if (!$mail) { //cw_log_add("order_messages_get_emails", array("imap last error: "=>imap_last_error())); if ($take_messages_debug == 'Y') { print_r(array("order_messages_get_emails", array("imap last error: " => imap_last_error()))); print "<br>"; } } else { if ($take_messages_debug == 'Y') { print_r(array("order_messages_get_emails", array("imap last error: " => imap_last_error(), "mail_obj" => $mail))); print "<br>"; } } $last_mail_id = cw_query_first_cell("select max(mail_id) from {$tables['mail_rpool']}"); if ($mail) { $headers = imap_headers($mail); if (!empty($headers)) { $curr_message_id = imap_num_msg($mail); while ($curr_message_id > 0) { $header = imap_header($mail, $curr_message_id); //do not save emails from anyone else but users $from = $header->from; foreach ($from as $id => $object) { $emailfrom = $object->mailbox . "@" . $object->host; } $is_users_email = cw_query_first_cell("select count(*) from {$tables['customers']} where email='" . addslashes($emailfrom) . "'"); if (!$is_users_email) { $curr_message_id--; continue; } // pull the plain text for message $n $st = imap_fetchstructure($mail, $curr_message_id); if (!empty($st->parts)) { for ($i = 0, $j = count($st->parts); $i < $j; $i++) { $part = $st->parts[$i]; if ($part->subtype == 'PLAIN') { $body = imap_fetchbody($mail, $curr_message_id, $i + 1); } } } else { $body = imap_body($mail, $curr_message_id); } $body = preg_replace('#(^\\w.+:\\n)?(^>.*(\\n|$))+#mi', "", $body); cw_array2insert('mail_rpool', array('header' => serialize($header), 'body' => addslashes($body), 'subject' => $header->subject, 'mail_from' => addslashes($emailfrom), 'mail_to' => $header->toaddress)); cw_log_add('mail_rpool', array('header' => $header, 'subject' => $header->subject, 'mail_from' => $emailfrom, 'mail_to' => $header->toaddress, 'body' => $body)); $curr_message_id--; } } imap_close($mail); } if ($last_mail_id) { $last_mail_id_condition = " where mail_id > '{$last_mail_id}' "; } if ($take_messages_debug != 'Y') { cw_order_messages_process_new_emails($last_mail_id_condition); } return; }
function cw_dod_generate() { global $tables, $config, $current_language; $generator = cw_query_first("select * from {$tables['dod_generators']} where active=1 and startdate<='" . time() . "' and enddate>'" . time() . "' and dod_interval<>0 order by position asc, generator_id asc"); if (!empty($generator)) { //check last generation date $last_gen_date = $generator['current_offer_date']; $hrs_since_last_generation = intval((time() - $last_gen_date) / 3600); $generate_again = false; if ($generator['dod_interval_type'] == 'D') { $generate_again = $hrs_since_last_generation >= $generator['dod_interval'] * 24; $offer_enddate = min($generator['enddate'], time() + $generator['dod_interval'] * 24 * 3600); } elseif ($generator['dod_interval_type'] == 'T') { $dod_period_hrs = intval(($generator['enddate'] - $generator['startdate']) / 3600); $hrs_interval = intval($dod_period_hrs / $generator['dod_interval']); $generate_again = $hrs_since_last_generation >= $hrs_interval; $offer_enddate = min($generator['enddate'], time() + $dod_period_hrs / $generator['dod_interval'] * 3600); } if ($generate_again || $_GET['force_generate']) { if (!empty($generator['used_pids'])) { $used_pids = explode(';', $generator['used_pids']); } else { $used_pids = array(); } $dod_products = cw_query_column("select dbd.object_id from {$tables['dod_bonus_details']} dbd inner join {$tables['dod_bonuses']} db on db.generator_id=dbd.generator_id and db.bonus_id=dbd.bonus_id and db.type='" . DOD_DISCOUNT . "' where dbd.generator_id='{$generator['generator_id']}' and dbd.object_type='" . DOD_OBJ_TYPE_PRODS . "'"); $dod_categories = cw_query_column("select dbd.object_id from {$tables['dod_bonus_details']} dbd inner join {$tables['dod_bonuses']} db on db.generator_id=dbd.generator_id and db.bonus_id=dbd.bonus_id and db.type='" . DOD_DISCOUNT . "' where dbd.generator_id='{$generator['generator_id']}' and dbd.object_type='" . DOD_OBJ_TYPE_CATS . "'"); $dod_manufacturers = cw_query_column("select dbd.object_id from {$tables['dod_bonus_details']} dbd inner join {$tables['dod_bonuses']} db on db.generator_id=dbd.generator_id and db.bonus_id=dbd.bonus_id and db.type='" . DOD_DISCOUNT . "' where dbd.generator_id='{$generator['generator_id']}' and dbd.object_type='" . DOD_OBJ_TYPE_MANS . "'"); $dod_attributes = cw_query("select dbd.* from {$tables['dod_bonus_details']} dbd inner join {$tables['dod_bonuses']} db on db.generator_id=dbd.generator_id and db.bonus_id=dbd.bonus_id and db.type='" . DOD_DISCOUNT . "' where dbd.generator_id='{$generator['generator_id']}' and dbd.object_type='" . DOD_OBJ_TYPE_ATTR . "'"); //select products by dod conditions $data = array(); $dod_data_where_pids = ''; if ($dod_products) { $dod_data_where_pids = "{$tables['products']}.product_id in ('" . implode("','", $dod_products) . "')"; } if ($dod_categories) { $data['search_in_subcategories'] = 1; $data['category_ids'] = $dod_categories; } if ($dod_manufacturers) { $manufacturer_id_attribute = cw_query_first_cell("select attribute_id from {$tables['attributes']} where field='manufacturer_id' and addon='manufacturers'"); if ($manufacturer_id_attribute) { if (!isset($ret_params)) { $ret_params = array(); } if (!isset($ret_params['query_joins'])) { $ret_params['query_joins'] = array(); } $ret_params['query_joins']['atv_manufacturer'] = array('tblname' => 'attributes_values', 'on' => "{$tables['products']}.product_id=atv_manufacturer.item_id and atv_manufacturer.item_type='P' and atv_manufacturer.attribute_id = '{$manufacturer_id_attribute}' and atv_manufacturer.code in ('{$current_language}', '') and atv_manufacturer.value in ('" . implode("','", $dod_manufacturers) . "')", 'is_inner' => 1); } } if ($dod_attributes) { $param2_sql = array('eq' => '=', 'lt' => '<', 'le' => '<=', 'gt' => '>', 'ge' => '=>'); foreach ($dod_attributes as $attr_data_k => $attr_data) { $is_def_values = cw_query_first("select * from {$tables['attributes_default']} where attribute_value_id='{$attr_data['param1']}' and attribute_id='{$attr_data['object_id']}'"); //print_r($is_def_values);print("<br><br>"); $sql_operation = $param2_sql[$attr_data['param2']]; if (empty($sql_operation)) { continue; } if (!isset($ret_params)) { $ret_params = array(); } if (!isset($ret_params['query_joins'])) { $ret_params['query_joins'] = array(); } if ($is_def_values) { $ret_params['query_joins']['atv_dod_' . $attr_data_k] = array('tblname' => 'attributes_values', 'on' => "{$tables['products']}.product_id=atv_dod_{$attr_data_k}.item_id and atv_dod_{$attr_data_k}.item_type='P' and atv_dod_{$attr_data_k}.attribute_id = '{$attr_data['object_id']}' and atv_dod_{$attr_data_k}.code in ('{$current_language}', '')", 'is_inner' => 1); $ret_params['query_joins']['atd_dod_' . $attr_data_k] = array('tblname' => 'attributes_default', 'on' => "atd_dod_{$attr_data_k}.attribute_value_id=atv_dod_{$attr_data_k}.value and atv_dod_{$attr_data_k}.attribute_id=atd_dod_{$attr_data_k}.attribute_id and atd_dod_{$attr_data_k}.value{$sql_operation}'" . addslashes($is_def_values['value']) . "'", 'is_inner' => 1); } else { $ret_params['query_joins']['atv_dod_' . $attr_data_k] = array('tblname' => 'attributes_values', 'on' => "{$tables['products']}.product_id=atv_dod_{$attr_data_k}.item_id and atv_dod_{$attr_data_k}.item_type='P' and atv_dod_{$attr_data_k}.attribute_id = '{$attr_data['object_id']}' and atv_dod_{$attr_data_k}.code in ('{$current_language}', '') and atv_dod_{$attr_data_k}.value{$sql_operation}'{$attr_data['param1']}'", 'is_inner' => 1); } } } global $user_account, $current_area, $items_per_page_targets, $target; $items_per_page_targets[$target] = 1; $new_pid = 0; $safety_cnt = 1000; while (!$new_pid && $safety_cnt > 0) { if (!empty($data) || !empty($dod_data_where_pids)) { $data['sort_field'] = 'rand'; $data['flat_search'] = 1; $dod_data_where = array(); if (!empty($dod_data_where_pids)) { $dod_data_where[] = $dod_data_where_pids; } if (!empty($used_pids)) { $dod_data_where[] = "{$tables['products']}.product_id not in ('" . implode("','", $used_pids) . "')"; } $data['where'] = implode(' and ', $dod_data_where); list($products, $nav, $product_filter) = cw_func_call('cw_product_search', array('data' => $data, 'user_account' => $user_account, 'current_area' => $current_area, 'info_type' => 8, 'product_id_only' => 1), $ret_params); } $product = reset($products); //print_r(array('product'=>$product));print("<br><br>"); $new_pid = $product['product_id']; if (!$new_pid) { if ($generator['no_item_repeat']) { break; } else { if (!empty($used_pids)) { array_shift($used_pids); } else { break; } } } $safety_cnt--; } //die; if ($new_pid) { $used_pids[] = $new_pid; } $generator['used_pids'] = implode(';', $used_pids); $regenerate_offer = true; if ($regenerate_offer) { //regenerate offer if (!empty($generator['current_offer_id'])) { $offer_ids = array($generator['current_offer_id']); $offer_ids_query = implode("', '", $offer_ids); db_query("DELETE FROM {$tables['ps_offers']} WHERE offer_id IN ('" . $offer_ids_query . "')"); db_query("DELETE FROM {$tables['ps_bonuses']} WHERE offer_id IN ('" . $offer_ids_query . "')"); db_query("DELETE FROM {$tables['ps_bonus_details']} WHERE offer_id IN ('" . $offer_ids_query . "')"); db_query("DELETE FROM {$tables['ps_conditions']} WHERE offer_id IN ('" . $offer_ids_query . "')"); db_query("DELETE FROM {$tables['ps_cond_details']} WHERE offer_id IN ('" . $offer_ids_query . "')"); db_query("DELETE FROM {$tables['attributes_values']} WHERE item_id IN ('" . $offer_ids_query . "') and item_type='PS'"); foreach ($offer_ids as $offer_id) { cw_image_delete($offer_id, PS_IMG_TYPE); } cw_attributes_cleanup($offer_ids, PS_ATTR_ITEM_TYPE); cw_cache_clean('shipping_rates'); } if ($new_pid) { cw_log_add('dod_generator', array('new DOD product selected' => $new_pid)); $new_offer_id = cw_array2insert('ps_offers', array('title' => 'Deal Of The Day', 'description' => $generator['description'], 'startdate' => time(), 'enddate' => $offer_enddate, 'active' => 1)); } $current_offer_id = 0; if ($new_offer_id) { $mdm_attribute_id = cw_query_first_cell("select attribute_id from {$tables['attributes']} where addon='multi_domains' and item_type='PS'"); if ($mdm_attribute_id) { cw_array2insert('attributes_values', array('item_id' => $new_offer_id, 'attribute_id' => $mdm_attribute_id, 'value' => 0, 'code' => '', 'item_type' => 'PS')); } //copy bonus and bonus details $dod_bonuses = cw_query("select * from {$tables['dod_bonuses']} where generator_id='{$generator['generator_id']}' and unused=0"); foreach ($dod_bonuses as $dod_bonus) { $_dod_bonus = $dod_bonus; unset($_dod_bonus['generator_id']); $_dod_bonus['offer_id'] = $new_offer_id; $new_bonus_id = cw_array2insert('ps_bonuses', $_dod_bonus); if ($_dod_bonus['type'] == 'D' && $_dod_bonus['apply'] == 3) { cw_array2insert('ps_bonus_details', array('bonus_id' => $new_bonus_id, 'offer_id' => $new_offer_id, 'object_id' => $new_pid, 'quantity' => 1, 'object_type' => DOD_OBJ_TYPE_PRODS)); } else { $dod_bonus_details = cw_query("select * from {$tables['dod_bonus_details']} where generator_id='{$generator['generator_id']}' and bonus_id='{$dod_bonus['bonus_id']}'"); if (!empty($dod_bonus_details)) { foreach ($dod_bonus_details as $dod_bonus_detail) { $_dod_bonus_detail = $dod_bonus_detail; unset($_dod_bonus_detail['generator_id']); $_dod_bonus_detail['offer_id'] = $new_offer_id; $_dod_bonus_detail['bonus_id'] = $new_bonus_id; cw_array2insert('ps_bonus_details', $_dod_bonus_detail); } } } } $new_cond_id = cw_array2insert('ps_conditions', array('type' => 'P', 'total' => '0.00', 'offer_id' => $new_offer_id)); if ($new_cond_id) { cw_array2insert('ps_cond_details', array('cond_id' => $new_cond_id, 'offer_id' => $new_offer_id, 'object_id' => $new_pid, 'quantity' => 1, 'object_type' => DOD_OBJ_TYPE_PRODS)); } $current_offer_id = $new_offer_id; } } //update dod_generator fields cw_array2update('dod_generators', array('current_offer_id' => $current_offer_id, 'used_pids' => $generator['used_pids'], 'current_offer_date' => $current_offer_id ? time() : 0), "generator_id='{$generator['generator_id']}'"); if ($current_offer_id && !empty($config['deal_of_day']['dod_news_template']) && $config['deal_of_day']['dod_newslist']) { $newslist = cw_query_first("select * from {$tables['newslists']} where list_id='" . $config['deal_of_day']['dod_newslist'] . "' and avail=1"); if (!empty($newslist)) { //create message global $smarty; $smarty->assign('promotion', $generator); $smarty->assign('product_id', $new_pid); $product_info = cw_func_call('cw_product_get', array('id' => $new_pid, 'user_account' => $user_account, 'info_type' => 65535)); $smarty->assign('product', $product_info); $smarty->assign('news_message', $config['deal_of_day']['dod_news_template']); $message = cw_display("addons/deal_of_day/admin/generate_news.tpl", $smarty, false, $newslist['lngcode']); $smarty->assign('news_message', $config['deal_of_day']['dod_news_template_subject']); $message_subject = cw_display("addons/deal_of_day/admin/generate_news.tpl", $smarty, false, $newslist['lngcode']); // $message = $smarty->display('addons/deal_of_day/admin/generate_news.tpl'); print $message_subject . "<hr />" . $message; if (!empty($message)) { cw_array2insert('newsletter', array('subject' => $message_subject, 'body' => $message, 'created_date' => time(), 'send_date' => time(), 'updated_date' => time(), 'status' => 'N', 'list_id' => $config['deal_of_day']['dod_newslist'], 'show_as_news' => 1, 'allow_html' => 1)); } } } } } return $new_pid; }
function cw_csvxc_transfer_import_images($src_table, $src_field, $key_field, $alt_field = '') { global $src_images_path, $dst_images_path, $csvxc_images_translate_path, $cw_images_subdir; if (empty($csvxc_images_translate_path[$src_table . "_" . $src_field])) { return; } if (!empty($alt_field)) { $alt_field_qry = ", `{$alt_field}`"; } $imgs_list = cw_query($qry = "SELECT `{$src_field}`, `{$key_field}`{$alt_field_qry} FROM `{$src_table}` WHERE `{$src_field}`!='' AND `{$key_field}`!=0"); cw_log_add("flexible_import", $qry); $img_cw_type = $csvxc_images_translate_path[$src_table . "_" . $src_field]['dir']; cw_flush("<b>Importing new images {$img_cw_type}</b> found " . count($imgs_list) . " to copy <br>"); cw_log_add("flexible_import", "<b>Importing new images {$img_cw_type}</b> found " . count($imgs_list) . " to copy <br>"); $flush_step = intval(count($imgs_list) / 100); $flush_cnt = 0; if (empty($imgs_list)) { return; } if (!isset($csvxc_images_translate_path[$src_table . "_" . $src_field]['table'])) { $csvxc_images_translate_path[$src_table . "_" . $src_field]['table'] = 'cw_' . $img_cw_type; } cw_flush("Taking images from {$src_images_path} <br>"); cw_log_add("flexible_import", "Taking images from {$src_images_path}"); $img_exts = array(1 => 'gif', 2 => 'jpg', 3 => 'png'); foreach ($imgs_list as $img_data) { if (strpos($img_data[$src_field], "http:") !== false) { $image_type = 2; foreach ($img_exts as $im_type => $im_ext) { if (strpos($img_data[$src_field], ".{$im_ext}") !== false) { $image_type = $im_type; break; } } $path_parts = parse_str($img_data[$src_field]); $image_ins_array = array('id' => $img_data[$key_field], 'image_path' => $img_data[$src_field], 'image_type' => $image_type, 'image_x' => 0, 'image_y' => 0, 'image_size' => 0, 'filename' => ltrim($path_parts['path'], '/'), 'date' => time(), 'alt' => isset($img_data[$alt_field]) ? $img_data[$alt_field] : '', 'avail' => 1, 'orderby' => 0, 'md5' => ''); cw_flush("Inserted web file " . $img_data[$src_field] . " <br>"); cw_log_add("flexible_import", "Inserted web file " . $img_data[$src_field]); cw_array2insert($csvxc_images_translate_path[$src_table . "_" . $src_field]['table'], $image_ins_array, 'true'); $flush_cnt++; if ($flush_cnt >= $flush_step) { //cw_flush("+ "); $flush_cnt = 0; } continue; /* cw_flush("Loading web file $img_data[$src_field]<br>"); //continue; $web_file_content = file_get_contents($img_data[$src_field]); if ($web_file_content) { $temp_image_name = $src_images_path.'/'.md5($img_data[$src_field]); @unlink($temp_image_name); if (file_put_contents($temp_image_name, $web_file_content)) { $size_info = getimagesize($temp_image_name); if (isset($img_exts[$size_info[2]])) { $new_temp_image_name = $temp_image_name.".".$img_exts[$size_info[2]]; rename($temp_image_name, $new_temp_image_name); if (file_exists($new_temp_image_name)) { $img_data[$src_field] = md5($img_data[$src_field]).".".$img_exts[$size_info[2]]; } } } } */ } $src_path = $src_images_path . '/' . ltrim($img_data[$src_field], '/'); if (!file_exists($src_path)) { cw_flush("Cant find file {$src_path} <br>"); cw_log_add("flexible_import", "Cant find file {$src_path}"); //cw_flush("- "); continue; } $flush_cnt++; if ($flush_cnt >= $flush_step) { //cw_flush("+ "); $flush_cnt = 0; } $subdir_fname = $img_cw_type; $dest_filename = end(explode('/', $img_data[$src_field])); $dest_path = $dst_images_path . '/' . $subdir_fname . '/' . $dest_filename; $fname_c = 1; while (file_exists($dest_path) && $fname_c < 10 && strpos($src_path, "no_image.jpg") === false) { $path_parts = pathinfo($dest_path); $dest_filename = $path_parts['filename'] . '_' . $fname_c . '.' . $path_parts['extension']; $dest_path = $dst_images_path . '/' . $subdir_fname . '/' . $dest_filename; $fname_c++; } if (copy($src_path, $dest_path)) { list($image_x, $image_y, $image_type) = getimagesize($dest_path); $path_parts = pathinfo($dest_path); $image_ins_array = array('id' => $img_data[$key_field], 'image_path' => addslashes('.' . $cw_images_subdir . '/' . $subdir_fname . '/' . $dest_filename), 'image_type' => $image_type, 'image_x' => $image_x, 'image_y' => $image_y, 'image_size' => filesize($dest_path), 'filename' => addslashes($path_parts['basename']), 'date' => time(), 'alt' => isset($img_data[$alt_field]) ? $img_data[$alt_field] : '', 'avail' => 1, 'orderby' => 0, 'md5' => md5_file($dest_path)); cw_flush("Inserted file {$dest_path} copied from {$src_path} <br>"); cw_log_add("flexible_import", "Inserted file {$dest_path} copied from {$src_path}"); cw_array2insert($csvxc_images_translate_path[$src_table . "_" . $src_field]['table'], $image_ins_array, 'true'); } else { cw_flush("Cant copy image {$src_path} to {$dest_path}"); cw_log_add("flexible_import", "Cant copy image {$src_path} to {$dest_path}"); } } cw_flush("<b>Done</b><br>"); }