var REST_PARAMS = REST_PARAMS || {}; REST_PARAMS.max_page = 10; REST_PARAMS.per_page = 'per_page=' + REST_PARAMS.max_page; function aggiornaPages() { var jsonurl = weburl + "wp-json/wp/v2/pages/"; $.ajax({ dataType: "json" , url: jsonurl , success: function (data) { $.each(data, function (key, val) { var id = val.id; var time = val.modified; var title = val.title.rendered; var content = val.content.rendered; FONTE.dbHandler.executeSql('INSERT INTO xm24_pages VALUES (?,?,?,?)', [id, title, time, content], function (resultSet) { console.log('resultSet.insertId: ' + resultSet.insertId); console.log('resultSet.rowsAffected: ' + resultSet.rowsAffected); }, function (error) { console.log('INSERT error: ' + error.message); }); }); } , error: JSONErrorHandler }); }; function aggiornaSingleCategory(category) { //resetta la variabile d'errore per le chiamate ajax asincrone FONTE.ajaxError = false; var jsonurl = weburl + "wp-json/wp/v2/posts?" + REST_PARAMS.per_page; var storage = window.localStorage; var lastUpdate = storage.getItem('db_update_date'); if (lastUpdate) jsonurl += "&filter[date_query][column]=post_modified_gmt&filter[date_query][after]=" + lastUpdate; getSinglePageRecur(jsonurl, category, 1) }; function aggiornaora() { $("#aggiornaora").popup("open"); }; function resetAndUpdate() { var storage = window.localStorage; //resetto la data e droppo le tabelle storage.setItem('db_update_date', null); FONTE.dbHandler.executeSql('DROP TABLE IF EXISTS xm24_posts;'); FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_posts (id INTEGER PRIMARY KEY, title, date, category, post)'); partialUpdate(); } function update() { FONTE.dbHandler.executeSql('SELECT COUNT(*) AS numPosts FROM xm24_posts', [], function (resultSet) { var numPosts = resultSet.rows.item(0).numPosts; if (numPosts < 300) { //questo numero e' scelto in maniera arbitraria, ricordati Cri. resetAndUpdate() } else { partialUpdate(); } }); } var getObjKey = function(obj, val){ var key = null; for(var k in obj){ if(obj[k] == val){ key = k; break; } } return key; } function partialUpdate(categories) { var storage = window.localStorage; var jsonurl = weburl + "wp-json/wp/v2/posts?" + REST_PARAMS.per_page + "&categories=" + categories.join(','); FONTE.updatedCategoriesCount = 0; FONTE.updatedPostsCount = 0; FONTE.neededPostsCount = 0; FONTE.ajaxError = false; var lastUpdate = storage.getItem('db_update_date'); if (lastUpdate) jsonurl += "&after=" + lastUpdate; //jsonurl += "&filter[date_query][column]=post_modified_gmt&filter[date_query][after]=" + lastUpdate; var firstTime = storage.getItem('db_lastnews_firsttime'); if (firstTime == null) storage.setItem('db_lastnews_firsttime', 'yes'); if (firstTime == 'yes') storage.setItem('db_lastnews_firsttime', 'no'); getLastSinglePageRecur(jsonurl, 1, categories); }; var updateLocalStorageDate = function(){ var date = new Date(); var currentUpdate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + date.getDate()).slice(-2); currentUpdate += 'T' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ':' + ('0' + date.getSeconds()).slice(-2); var lastUpdate = window.localStorage.getItem('db_update_date') window.localStorage.setItem('db_update_date', currentUpdate); window.localStorage.setItem('db_lastnews_date', lastUpdate); } var getPrevNews = function(div, categories, page) { var storage = window.localStorage; var type = getObjKey(FONTE.categories, categories); var jsonurl = weburl + "wp-json/wp/v2/posts?" + REST_PARAMS.per_page + "&categories=" + FONTE.categories[type].join(','); FONTE.updatedCategoriesCount = 0; FONTE.updatedPostsCount = 0; FONTE.neededPostsCount = 0; var oldest_date = window.localStorage.getItem('db_oldest_' + type + '_date'); if (oldest_date) jsonurl += "&before=" + oldest_date; getPrevSinglePageRecur(jsonurl, 1, FONTE.categories[type]); } function loadMore(type) { var categories = FONTE.categories[type]; renderPrevNews(FONTE.contentListId, categories, FONTE.page_loaded[type], function(){ getPrevNews(FONTE.contentListId, categories, FONTE.page_loaded[type]) }); } function getPrevSinglePageRecur(url, pagenum, categories) { var type = getObjKey(FONTE.categories, categories); console.log('url:'+url); $.ajax({ dataType: "json" , url: url + "&page=" + pagenum , success: function (data, textStatus, jqXHR) { var totalPages = jqXHR.getResponseHeader('X-WP-TotalPages'); FONTE.neededPostsCount += data.length; if (FONTE.neededPostsCount == 0) { toastr.info('Non ci sono altri alticoli da visualizzare in questa sezione'); updateLocalStorageDate(); } var n_error = 0 var oldest_date = window.localStorage.getItem('db_oldest_' + type + '_date'); $.each(data, function (key, val) { var id = val.id; var time = val.modified; var title = val.title.rendered; var tags = val.tags; var postCategories = val.categories; var blob = JSON.stringify(val); FONTE.dbHandler.executeSql('INSERT OR REPLACE INTO xm24_posts VALUES (?,?,?,?)', [id, title, time, blob], function (resultSet) { FONTE.updatedPostsCount++; oldest_date = time; if (n_error + FONTE.updatedPostsCount >= FONTE.neededPostsCount) { updateLocalStorageDate(); window.localStorage.setItem('db_oldest_' + type + '_date', oldest_date); toastr.info('Caricati altri ' + FONTE.updatedPostsCount + ' articoli.'); loadMore(type); } //manca il caso in cui sono stati cancellati dei post online, vanno cancellati anche dall'app. }, function (error) { n_error++; if (n_error + FONTE.updatedPostsCount >= FONTE.neededPostsCount && FONTE.updatedPostsCount > 0 ) { updateLocalStorageDate(); window.localStorage.setItem('db_oldest_' + type + '_date', oldest_date); toastr.info('Caricati altri ' + FONTE.updatedPostsCount + ' articoli.'); loadMore(type); } }); $.each(postCategories, function (key, val) { insertOrUpdateCatToPost(id, val); }); }); } , error: JSONErrorHandler }); }; function getLastSinglePageRecur(url, pagenum, categories) { var type = getObjKey(FONTE.categories, categories); console.log('url:'+url); $.ajax({ dataType: "json" , url: url + "&page=" + pagenum , success: function (data, textStatus, jqXHR) { var totalPages = jqXHR.getResponseHeader('X-WP-TotalPages'); FONTE.neededPostsCount += data.length; if (FONTE.neededPostsCount == 0) { toastr.info('Nessun nuovo articolo.'); updateLocalStorageDate(); if(FONTE.page_loaded[type] == 0) { renderLastNews(FONTE.contentListId, categories); } } var n_error = 0 var oldest_date = window.localStorage.getItem('db_oldest_' + type + '_date'); var older_date = null; $.each(data, function (key, val) { var id = val.id; var time = val.modified; var title = val.title.rendered; var tags = val.tags; var postCategories = val.categories; var blob = JSON.stringify(val); FONTE.dbHandler.executeSql('INSERT OR REPLACE INTO xm24_posts VALUES (?,?,?,?)', [id, title, time, blob], function (resultSet) { FONTE.updatedPostsCount++; console.log('Voci aggiornate: ' + FONTE.updatedPostsCount); older_date = time; if (n_error + FONTE.updatedPostsCount >= FONTE.neededPostsCount) { updateLocalStorageDate(); if(! oldest_date) window.localStorage.setItem('db_oldest_' + type + '_date', older_date); toastr.info('Ci sono ' + FONTE.updatedPostsCount + ' nuovi articoli.'); renderLastNews(FONTE.contentListId, categories); } //manca il caso in cui sono stati cancellati dei post online, vanno cancellati anche dall'app. }, function (error) { n_error++; if (n_error + FONTE.updatedPostsCount >= FONTE.neededPostsCount && FONTE.updatedPostsCount > 0 ) { updateLocalStorageDate(); if(! oldest_date) window.localStorage.setItem('db_oldest_' + type + '_date', older_date); toastr.info('Aggiornati ' + FONTE.updatedPostsCount + ' nuovi articoli.'); renderLastNews(FONTE.contentListId, categories); } }); // $.each(tags, function (key, val) { // aggiornaTagsToPosts(id, val); // }); $.each(postCategories, function (key, val) { insertOrUpdateCatToPost(id, val); }); }); } , error: JSONErrorHandler }); };