query("SELECT id_tm FROM tm_index LIMIT 0,20000"); while ($data = $db->fetch_assoc($res)) $tms[] = $data['id_tm']; //makes an array with existant keywords $kws = array(); $res = $db->query("SELECT id_keyword, label_en FROM tm_keywords_index LIMIT 0,20000"); while ($data = $db->fetch_assoc($res)) $kws[$data['label_en']] = $data['id_keyword']; //loops on one template's xml data foreach ($xml->template as $tm) { //if templates doesn't exist in the database if (!in_array($tm->id, $tms)) //insert it $action = "INSERT INTO"; else //update it { $action = "UPDATE"; $condition = "WHERE `id_tm` = '".$tm->id."'"; } //template insert sql query string $insert_tm = $action." `tm_index` SET `id_tm`='".$tm->id."', `state`='".$tm->state."', `is_hosting`='".$tm->is_hosting."', `is_flash`='".$tm->is_flash."', `is_unique`='".$tm->is_unique."', `is_non_unique`='".$tm->is_non_unique."', `is_unique_corporate`='".$tm->is_unique_corporate."', `is_full_site`='".$tm->is_full_site."', `is_real_size`='".$tm->is_real_size."', `id_author`='".$tm->author->author_id."', `id_type`='".$tm->template_type->type_id."', `price`='".$tm->price."' ".$condition.";"; //sql query $db->query($insert_tm) or error('Impossible to insert template
'.$insert_tm.mysql_error(), __FILE__, __LINE__, $db->error()); //template details insert sql query string $insert_tm_details = $action." `tm_details` SET `id_tm`='".$db->insert_id()."', `exc_price`='".$tm->exc_price."', `downloads`='".$tm->downloads."', `inserted_date`='".$tm->inserted_date."', `software_required`='".$tm->is_non_unique."' ".$condition.";"; //sql query $db->query($insert_tm_details) or error('Impossible to insert template details
'.$insert_tm_details.mysql_error(), __FILE__, __LINE__, $db->error()); //makes an array with template's keywords $tm_kw = explode(" ", $tm->keywords); //loops on template's key array foreach ($tm_kw as $kw) { $kw = str_ireplace("\n", " ", trim($db->escape($kw))); if ($kw == "realtor\nhorizontalmenu") echo 'cla'; //if keywords exists in database, inserts the template/keyword link if (array_key_exists($kw,$kws)) { $sql = "INSERT INTO tm_keywords SET id_tm = ".$tm->id.", id_keyword = ".$kws[$kw]; $db->query($sql) or die ($sql.mysql_error()); } //or create the keyword_index and insert link else { $sql = "INSERT INTO tm_keywords_index SET label_en = '".$kw."'"; $db->query($sql) or die ($sql.mysql_error()); $kwid = $db->insert_id(); $sql = "INSERT INTO tm_keywords SET id_tm = ".$tm->id.", id_keyword = '".$kwid."'"; $db->query($sql) or die ($sql.mysql_error()); //adds keyword to cached keywords $kws[$kw] = $kwid; //insert translation task here } } //if template does not exist if ($action == "INSERT INTO") { //adds style links foreach ($tm->styles->style as $style) tm_add_style($style->style_id, $tm->id); //adds category links foreach ($tm->categories->category as $cat) tm_add_cat($cat->category_id, $tm->id); // don't blame me blame because there is redundant information in xml please ! //basically, we are making one array of all templates screenshots $screenshots = array(); foreach ($tm->screenshots_list->screenshot as $screenshoot) { $rel_uri = trim(str_ireplace('http://images.templatemonster.com/screenshots/','',$screenshoot->uri)); $screenshots[$rel_uri]['filemtime'] = mktimestamp($screenshoot->filemtime); $screenshots[$rel_uri]['id_page'] = 0; $screenshots[$rel_uri]['uri'] = $rel_uri; } foreach ($tm->pages->page as $page) { //get page id to use $sql = "SELECT id_page, label_en FROM tm_pages WHERE label_en='".$db->escape($page->name)."'"; $res_pages = $db->query($sql) or error('Impossible to fetch pages'.$sql, __FILE__, __LINE__, $db->error()); if ($db->num_rows($res_pages)<1) { $db->query("INSERT INTO tm_pages SET label_en='".$db->escape($page->name)."'") or die(mysql_error()."
"."INSERT INTO tm_pages SET label_en='".$db->escape($page->name)."'"); $id_page = $db->insert_id(); } else { $local_tmp = $db->fetch_assoc($res_pages); $id_page = $local_tmp['id_page']; } //got page id foreach($page->screenshots->scr as $scr) { $rel_uri = trim(str_ireplace('http://images.templatemonster.com/screenshots/','',$scr->uri)); $screenshots[$rel_uri]['id_tm'] = $tm->id; $screenshots[$rel_uri]['id_page'] = $id_page; $screenshots[$rel_uri]['description'] = strtolower($scr->description); $screenshots[$rel_uri]['scr_type_id'] = $scr->scr_type_id; $screenshots[$rel_uri]['width'] = $scr->width; $screenshots[$rel_uri]['height'] = $scr->height; $screenshots[$rel_uri]['href'] = $scr->href; $screenshots[$rel_uri]['uri'] = $rel_uri; } } //Finally, we got these redundant information sorted, painfull isn't it ? //loops in screenshots array : foreach($screenshots as $sshot) { //makes screenshot insertion sql query script $order = "INSERT INTO `tm_screenshots`"; $id_page = ($sshot['id_page']>0)?"`id_page` = '".$sshot['id_page']."', ":""; $sql = $order.' SET '.$id_page.' `id_tm` = "'.$tm->id.'", `scr_type_id` = "'.$sshot['scr_type_id'].'", `width` = "'.$sshot['width'].'", `height` = "'.$sshot['height'].'", `uri` = "'.$sshot['uri'].'", `filemtime` = "'.$sshot['filemtime'].'", `href` = "'.$sshot['href'].'", `description` = "'.$sshot['description'].'";'; //queries for insertion $db->query($sql) or die ($sql."
".mysql_error()); if ($tm_config['local_screenshots']) { //make folders and downloads screenshot $uri = array(); $uri = explode("/", $sshot['uri']); mkdir(SCREENSHOTS_FOLDER.$uri[0]); get_file1("http://images.templatemonster.com/screenshots/".$sshot['uri'],SCREENSHOTS_FOLDER.$uri[0]."/",$uri[1]); } } } $i++; } echo $num_templates."
"; $db->end_transaction();