var REST_PARAMS = REST_PARAMS || {}; REST_PARAMS.api = "wp-json/wp/v2"; REST_PARAMS.posts = REST_PARAMS.api + "/posts?"; REST_PARAMS.pages = REST_PARAMS.api + "/pages?"; REST_PARAMS.max_page = 10; REST_PARAMS.per_page = 'per_page=' + REST_PARAMS.max_page; function aggiornaPages() { var jsonurl = weburl + REST_PARAMS.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 + REST_PARAMS.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 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)'); postsUpdate(); } 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 { postsUpdate(); } }); } function postsUpdate(categories) { $(FONTE.contentListClass).empty(); var storage = window.localStorage; var type = getObjKey(FONTE.categories, categories); var jsonurl = weburl + REST_PARAMS.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_' + type + '_date'); if (lastUpdate) jsonurl += "&after=" + lastUpdate; //jsonurl += "&filter[date_query][column]=post_modified_gmt&filter[date_query][after]=" + lastUpdate; var firstTime = storage.getItem('db_last_' + type + '_firsttime'); if (firstTime === null) storage.setItem('db_last_' + type + '_firsttime', 'yes'); if (firstTime == 'yes') storage.setItem('db_last_' + type + '_firsttime', 'no'); getLastSinglePageRecur(jsonurl, 1, categories); } var updateLocalStorageDate = function(type){ 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_' + type + '_date'); window.localStorage.setItem('db_update_' + type + '_date', currentUpdate); window.localStorage.setItem('db_last_' + type + '_date', lastUpdate); }; var getPrevNews = function(div, categories, page) { var storage = window.localStorage; var type = getObjKey(FONTE.categories, categories); var jsonurl = weburl + REST_PARAMS.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.contentListClass, categories, FONTE.page_loaded[type], function(){ getPrevNews(FONTE.contentListClass, categories, FONTE.page_loaded[type]); }); } function getPrevSinglePageRecur(url, pagenum, categories) { $.mobile.loading('show'); 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) { $.mobile.loading('hide'); toastr.info('Non ci sono altri alticoli da visualizzare in questa sezione'); updateLocalStorageDate(type); } 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.date; 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(type); 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(type); 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) { // resetto la paginazione di #info e #ilove FONTE.page_loaded.info = 0; FONTE.page_loaded.ilove = 0; 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(type); if(FONTE.page_loaded[type] === 0) { renderLastNews(FONTE.contentListClass, 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.date; 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(type); if(! oldest_date) window.localStorage.setItem('db_oldest_' + type + '_date', older_date); toastr.info('Ci sono ' + FONTE.updatedPostsCount + ' nuovi articoli.'); renderLastNews(FONTE.contentListClass, 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(type); if(! oldest_date) window.localStorage.setItem('db_oldest_' + type + '_date', older_date); toastr.info('Aggiornati ' + FONTE.updatedPostsCount + ' nuovi articoli.'); renderLastNews(FONTE.contentListClass, categories); } }); // $.each(tags, function (key, val) { // aggiornaTagsToPosts(id, val); // }); $.each(postCategories, function (key, val) { insertOrUpdateCatToPost(id, val); }); }); // if (data.length === 0) { // renderLastNews(FONTE.contentListClass, categories); // } }, error: JSONErrorHandler }); }