int CAddonDatabase::SetLastChecked(const std::string& id, const ADDON::AddonVersion& version, const std::string& time) { try { if (NULL == m_pDB.get()) return false; if (NULL == m_pDS.get()) return false; int retId = -1; std::string sql = PrepareSQL("SELECT * FROM repo WHERE addonID='%s'", id.c_str()); m_pDS->query(sql); if (m_pDS->eof()) { sql = PrepareSQL("INSERT INTO repo (id, addonID, lastcheck, version) " "VALUES (NULL, '%s', '%s', '%s')", id.c_str(), time.c_str(), version.asString().c_str()); m_pDS->exec(sql); retId = static_cast<int>(m_pDS->lastinsertid()); } else { retId = m_pDS->fv(0).get_asInt(); sql = PrepareSQL("UPDATE repo SET lastcheck='%s', version='%s' WHERE addonID='%s'", time.c_str(), version.asString().c_str(), id.c_str()); m_pDS->exec(sql); } return retId; } catch (...) { CLog::Log(LOGERROR, "%s failed on repo '%s'", __FUNCTION__, id.c_str()); } return -1; }
void CPythonInvoker::onPythonModuleInitialization(void* moduleDict) { if (m_addon.get() == NULL || moduleDict == NULL) return; PyObject *moduleDictionary = (PyObject *)moduleDict; PyObject *pyaddonid = PyString_FromString(m_addon->ID().c_str()); PyDict_SetItemString(moduleDictionary, "__xbmcaddonid__", pyaddonid); ADDON::AddonVersion version = m_addon->GetDependencyVersion("xbmc.python"); PyObject *pyxbmcapiversion = PyString_FromString(version.asString().c_str()); PyDict_SetItemString(moduleDictionary, "__xbmcapiversion__", pyxbmcapiversion); CLog::Log(LOGDEBUG, "CPythonInvoker(%d, %s): instantiating addon using automatically obtained id of \"%s\" dependent on version %s of the xbmc.python api", GetId(), m_sourceFile.c_str(), m_addon->ID().c_str(), version.asString().c_str()); }
bool CPeripheralAddon::CheckAPIVersion(void) { // Check the API version ADDON::AddonVersion minVersion = ADDON::AddonVersion(PERIPHERAL_MIN_API_VERSION); m_apiVersion = ADDON::AddonVersion(m_pStruct->GetPeripheralAPIVersion()); if (!IsCompatibleAPIVersion(minVersion, m_apiVersion)) { CLog::Log(LOGERROR, "PERIPHERAL - Add-on '%s' is using an incompatible API version. XBMC minimum API version = '%s', add-on API version '%s'", Name().c_str(), minVersion.asString().c_str(), m_apiVersion.asString().c_str()); return false; } return true; }
bool CAddonDatabase::SetRepoTimestamp(const std::string& id, const std::string& time, const ADDON::AddonVersion& version) { try { if (NULL == m_pDB.get()) return false; if (NULL == m_pDS.get()) return false; std::string sql = PrepareSQL("UPDATE repo SET lastcheck='%s', version='%s' WHERE addonID='%s'", time.c_str(), version.asString().c_str(), id.c_str()); m_pDS->exec(sql.c_str()); return true; } catch (...) { CLog::Log(LOGERROR, "%s failed on repo '%s'", __FUNCTION__, id.c_str()); } return false; }