Esempio n. 1
0
 public static function importOptionProducts()
 {
     $result = lC_Products_import_export_Admin::importOptionProducts($_GET['opfilename'], $_GET['owizard'], $_GET['otype'], $_GET['obackup']);
     if (isset($result['total']) && $result['total'] != null) {
         $result['rpcStatus'] = RPC_STATUS_SUCCESS;
     } else {
     }
     echo json_encode($result);
 }
 public static function importCategories($filename, $cwizard, $ctype, $cbackup, $cmapdata = NULL)
 {
     global $lC_Database, $lC_Datetime, $lC_Language, $lC_Image;
     if ($cwizard == 'false') {
         $cwizard = FALSE;
     } else {
         $cwizard = TRUE;
     }
     $lC_Categories = new lC_Categories_Admin();
     $error = FALSE;
     $errormsg = "";
     $msg = "";
     $uploaddir = DIR_FS_WORK . 'products_import_export/imports/';
     // $other .= 'Upload Dir: ' . $uploaddir;
     $uploadfile = $uploaddir . basename($filename);
     if (is_null($cmapdata)) {
         $columns = array('categories_id', 'image', 'parent_id', 'sort_order', 'mode', 'link_target', 'custom_url', 'status', 'nav', 'box', 'date_added', 'language_id', 'name', 'menu_name', 'blurb', 'description', 'keyword', 'tags');
     } else {
         // do the mapping of columns here with the mapdata
         $columns = array('categories_id', 'image', 'parent_id', 'sort_order', 'mode', 'link_target', 'custom_url', 'status', 'nav', 'box', 'date_added', 'language_id', 'name', 'menu_name', 'blurb', 'description', 'keyword', 'tags');
     }
     $ext = end(explode(".", $filename));
     if ($ext == 'txt') {
         $delim = "\t";
     } else {
         if ($ext == 'csv') {
             $delim = ",";
         } else {
             $delim = "\t";
         }
     }
     $row = 0;
     if (($handle = fopen($uploadfile, "r")) !== FALSE) {
         while (($data = fgetcsv($handle, null, "\t")) !== FALSE) {
             $num = count($data);
             for ($c = 0; $c < $num; $c++) {
                 if ($row != 0) {
                     $import_array[$row][$columns[$c]] = $data[$c];
                 }
             }
             $row++;
         }
         fclose($handle);
     }
     $match_count = 0;
     $insert_count = 0;
     if ($cwizard) {
         // p wizard stuff like return columns and etc.
         $msg .= 'CWIZARD AGAIN!~!!!!!!!!!!';
     } else {
         // do the import as usual
         // utilize import array to go through each column and run on each to check for category id and if not matched import and remove from arrray
         foreach ($import_array as $category) {
             // Get the products ID for control
             $categories_id = $category['categories_id'];
             // check for a match in the database
             $Qcheck = $lC_Database->query("SELECT * FROM :table_categories WHERE categories_id = :categories_id");
             $Qcheck->bindTable(':table_categories', TABLE_CATEGORIES);
             $Qcheck->bindInt(':categories_id', $categories_id);
             $category_check = $Qcheck->numberOfRows();
             // build a cPath for later use
             $parents = self::getParentsPath($category['categories_id']);
             if (empty($parents)) {
                 $query = "cPath=" . $category['categories_id'];
             } else {
                 $query = "cPath=" . implode("_", array_reverse(explode("_", str_replace("_0", "", self::getParentsPath($category['categories_id']))))) . "_" . $category['categories_id'];
             }
             $query = str_replace("cPath=0_", "cPath=", $query);
             if ($category_check > 0) {
                 // the category exists in the database so were just going to update the category with the new data
                 $match_count++;
                 $cdaParts = explode("/", $category['date_added']);
                 $category_date_added = date("Y-m-d H:i:s", mktime(0, 0, 0, $cdaParts[0], $cdaParts[1], $cdaParts[2]));
                 // build data array of category information
                 $data['categories_id'] = $category['categories_id'];
                 $data['image'] = $category['image'];
                 $data['parent_id'] = $category['parent_id'];
                 $data['sort_order'] = $category['sort_order'];
                 $data['mode'] = $category['mode'];
                 $data['link_target'] = $category['link_target'];
                 $data['custom_url'] = $category['custom_url'];
                 $data['status'] = $category['status'];
                 $data['nav'] = $category['nav'];
                 $data['box'] = $category['box'];
                 $data['date_added'] = $category_date_added != '' ? $category_date_added : 'now()';
                 $data['last_modified'] = $category['last_modified'];
                 $data['name'][$category['language_id']] = $category['name'];
                 $data['menu_name'][$category['language_id']] = $category['menu_name'];
                 $data['permalink'][$category['language_id']] = '';
                 $data['blurb'][$category['language_id']] = $category['blurb'];
                 $data['description'][$category['language_id']] = $category['description'];
                 $data['keyword'][$category['language_id']] = $category['keyword'];
                 $data['tags'][$category['language_id']] = $category['tags'];
                 $lC_Categories->save($categories_id, $data);
             } else {
                 // the category doesnt exist so lets write it into the database
                 $insert_count++;
                 $cdaParts = explode("/", $category['date_added']);
                 $category_date_added = date("Y-m-d H:i:s", mktime(0, 0, 0, $cdaParts[0], $cdaParts[1], $cdaParts[2]));
                 // Insert using code from the catgories class
                 $error = false;
                 $lC_Database->startTransaction();
                 $Qcat = $lC_Database->query('insert into :table_categories (categories_id, categories_image, parent_id, sort_order, categories_mode, categories_link_target, categories_custom_url, categories_status, categories_visibility_nav, categories_visibility_box, date_added) values (:categories_id, :categories_image, :parent_id, :sort_order, :categories_mode, :categories_link_target, :categories_custom_url, :categories_status, :categories_visibility_nav, :categories_visibility_box, :date_added)');
                 $Qcat->bindInt(':categories_id', $category['categories_id']);
                 $Qcat->bindInt(':parent_id', $category['parent_id']);
                 $Qcat->bindTable(':table_categories', TABLE_CATEGORIES);
                 $Qcat->bindValue(':categories_image', $category['image']);
                 $Qcat->bindValue(':date_added', $category_date_added != '' ? $category_date_added : 'now()');
                 $Qcat->bindInt(':parent_id', $category['parent_id']);
                 $Qcat->bindInt(':sort_order', $category['sort_order']);
                 $Qcat->bindValue(':categories_mode', $category['mode']);
                 $Qcat->bindInt(':categories_link_target', $category['link_target']);
                 $Qcat->bindValue(':categories_custom_url', $category['custom_url']);
                 $Qcat->bindInt(':categories_status', $category['status']);
                 $Qcat->bindInt(':categories_visibility_nav', $category['nav']);
                 $Qcat->bindInt(':categories_visibility_box', $category['box']);
                 $Qcat->setLogging($_SESSION['module'], $id);
                 $Qcat->execute();
                 // remove this line from categories for it to be re inserted
                 $Qrcd = $lC_Database->query('delete from :table_categories_description where categories_id = :categories_id and language_id = :language_id');
                 $Qrcd->bindTable(':table_categories_description', TABLE_CATEGORIES_DESCRIPTION);
                 $Qrcd->bindInt(':categories_id', $categories_id);
                 $Qrcd->bindInt(':language_id', $category['language_id']);
                 $Qrcd->execute();
                 $Qcd = $lC_Database->query('insert into :table_categories_description (categories_id, language_id, categories_name, categories_menu_name, categories_blurb, categories_description, categories_tags) values (:categories_id, :language_id, :categories_name, :categories_menu_name, :categories_blurb, :categories_description, :categories_tags)');
                 $Qcd->bindTable(':table_categories_description', TABLE_CATEGORIES_DESCRIPTION);
                 $Qcd->bindInt(':categories_id', $categories_id);
                 $Qcd->bindInt(':language_id', $category['language_id']);
                 $Qcd->bindValue(':categories_name', $category['name']);
                 $Qcd->bindValue(':categories_menu_name', $category['menu_name']);
                 $Qcd->bindValue(':categories_blurb', $category['blurb']);
                 $Qcd->bindValue(':categories_description', $category['description']);
                 $Qcd->bindValue(':categories_tags', $category['tags']);
                 $Qcd->setLogging($_SESSION['module'], $categories_id);
                 $Qcd->execute();
                 if ($lC_Database->isError()) {
                     $error = true;
                     break;
                 }
                 // added for permalinks
                 if ($error === false) {
                     // get existing cat permalinks
                     $Qquery = $lC_Database->query("select permalink from :table_permalinks where type = :type and language_id = :language_id");
                     $Qquery->bindTable(':table_permalinks', TABLE_PERMALINKS);
                     $Qquery->bindInt(':type', 1);
                     $Qquery->bindInt(':language_id', $category['language_id']);
                     $Qquery->execute();
                     // make the array of existing permalinks
                     while ($Qquery->next()) {
                         $cat_pl_arr[] = $Qquery->value('permalink');
                     }
                     // what the new permalink is to be
                     $cat_permalink = lC_Products_import_export_Admin::generate_clean_permalink($category['name']);
                     // compare to existing cat permalinks and add random string to avoid duplicates if needed
                     if (in_array($cat_permalink, $cat_pl_arr)) {
                         $cat_permalink = $cat_permalink . '-' . self::randomString();
                     }
                     // insert the new permalink
                     $Qupdate = $lC_Database->query("insert into :table_permalinks (item_id, language_id, type, query, permalink) values (:item_id, :language_id, :type, :query, :permalink)");
                     $Qupdate->bindTable(':table_permalinks', TABLE_PERMALINKS);
                     $Qupdate->bindInt(':item_id', $categories_id);
                     $Qupdate->bindInt(':language_id', $category['language_id']);
                     $Qupdate->bindInt(':type', 1);
                     $Qupdate->bindValue(':query', $query);
                     $Qupdate->bindValue(':permalink', $cat_permalink);
                     $Qupdate->execute();
                     $Qquery->freeResult();
                     if ($lC_Database->isError()) {
                         $error = true;
                         break;
                     }
                 }
                 if ($error === false) {
                     $lC_Database->commitTransaction();
                 } else {
                     $lC_Database->rollbackTransaction();
                 }
             }
         }
     }
     // end if $do
     // for all left in array match and update the records
     // use columns from import to figure out what columns are what
     if ($error || $errormsg != '') {
         if ($errormsg) {
             $icreturn['error'] = $errormsg . 'Error: ' . $error;
         }
     }
     if ($msg) {
         $icreturn['msg'] = $msg . ' cwizard: ' . $cwizard;
     }
     $icreturn['matched'] = $match_count;
     $icreturn['inserted'] = $insert_count;
     $icreturn['total'] = $match_count + $insert_count;
     return $icreturn;
 }