fannie/item/laneUpdates_WEFC_Toronto.php
<?php
/*******************************************************************************
Copyright 2009 Whole Foods Co-op
This file is part of CORE-POS.
CORE-POS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
CORE-POS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
in the file license.txt along with IT CORE; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*********************************************************************************/
/* --COMMENTS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* 8Aug2015 Eric Lee Updated.
* 27Feb2013 Eric Lee Add functions like the originals with table_name as a parameter.
* Supports more product-related tables on the lane.
*/
require(dirname(__FILE__) . '/../config.php');
if (!class_exists('SQLManager'))
require(__DIR__ . '/../src/SQLManager.php');
function addAllLanes($upc, $table_name){
$FANNIE_OP_DB = FannieConfig::config('OP_DB');
$FANNIE_LANES = FannieConfig::config('LANES');
$STORE_MODE = FannieConfig::config('STORE_MODE');
$STORE_ID = FannieConfig::config('STORE_ID');
$laneupdate_sql = FannieDB::get($FANNIE_OP_DB);
$server_table_def = $laneupdate_sql->tableDefinition("{$table_name}",$FANNIE_OP_DB);
if (count($server_table_def) == 0)
echo "<br />server_table_def is empty for >{$table_name}<";
// generate list of server columns
$server_cols = array();
foreach($server_table_def as $k=>$v)
$server_cols[$k] = True;
for ($i = 0; $i < count($FANNIE_LANES); $i++){
$laneupdate_sql->addConnection($FANNIE_LANES[$i]['host'],$FANNIE_LANES[$i]['type'],
$FANNIE_LANES[$i]['op'],$FANNIE_LANES[$i]['user'],
$FANNIE_LANES[$i]['pw']);
if ( $laneupdate_sql->table_exists("$table_name") ) {
// generate list of columns that exist on both
// the server and the lane
$lane_table_def = $laneupdate_sql->tableDefinition("{$table_name}",$FANNIE_LANES[$i]['op']);
$matching_columns = array();
foreach($lane_table_def as $k=>$v){
if (isset($server_cols[$k])) $matching_columns[] = $k;
}
$selQ = "SELECT ";
$ins = "INSERT INTO $table_name (";
foreach($matching_columns as $col){
$selQ .= $col.",";
$ins .= $col.",";
}
$selQ = rtrim($selQ,",") .
" FROM $table_name WHERE upc='$upc'";
if ($STORE_MODE == 'HQ') {
$selQ .= ' AND store_id=' . ((int)$STORE_ID);
}
if ( isset($matching_columns['store_id']) )
$selQ .= " ORDER BY store_id DESC";
$selQ = $laneupdate_sql->addSelectLimit($selQ, 1, $FANNIE_OP_DB);
$ins = rtrim($ins,",").")";
if (True) {
// Production
$laneupdate_sql->transfer($FANNIE_OP_DB,$selQ,$FANNIE_LANES[$i]['op'],$ins);
} else {
// Test
$tok = $laneupdate_sql->transfer($FANNIE_OP_DB,$selQ,$FANNIE_LANES[$i]['op'],$ins);
$laneupdate_sql->logger("add to $table_name tok: $tok");
}
}
}
}
function removeAllLanes($upc, $table_name){
$FANNIE_OP_DB = FannieConfig::config('OP_DB');
$FANNIE_LANES = FannieConfig::config('LANES');
for ($i = 0; $i < count($FANNIE_LANES); $i++){
$tmp = new SQLManager($FANNIE_LANES[$i]['host'],$FANNIE_LANES[$i]['type'],
$FANNIE_LANES[$i]['op'],$FANNIE_LANES[$i]['user'],
$FANNIE_LANES[$i]['pw']);
if ( $tmp->table_exists("$table_name") ) {
$delQ = "DELETE FROM $table_name WHERE upc='$upc'";
$delR = $tmp->query($delQ,$FANNIE_LANES[$i]['op']);
}
}
}
function updateAllLanes($upc, $tables){
foreach ($tables as $table) {
removeAllLanes($upc, $table);
addAllLanes($upc, $table);
}
}
function deleteAllLanes($upc, $tables){
foreach ($tables as $table) {
removeAllLanes($upc, $table);
}
}