bool PDOSqliteConnection::createFunction(const String& name, CVarRef callback, int argcount) { if (!f_is_callable(callback)) { raise_warning("function '%s' is not callable", callback.toString().data()); return false; } c_SQLite3::UserDefinedFuncPtr udf(new c_SQLite3::UserDefinedFunc()); auto stat = sqlite3_create_function(m_db, name.data(), argcount, SQLITE_UTF8, udf.get(), php_sqlite3_callback_func, nullptr, nullptr); if (stat != SQLITE_OK) { return false; } udf->func = callback; udf->argc = argcount; m_udfs.push_back(udf); return true; }
bool c_SQLite3::t_createfunction(const String& name, CVarRef callback, int64_t argcount /* = -1 */) { validate(); if (name.empty()) { return false; } if (!f_is_callable(callback)) { raise_warning("Not a valid callback function %s", callback.toString().data()); return false; } UserDefinedFuncPtr udf(new UserDefinedFunc()); if (sqlite3_create_function(m_raw_db, name.data(), argcount, SQLITE_UTF8, udf.get(), php_sqlite3_callback_func, NULL, NULL) == SQLITE_OK) { udf->func = callback; udf->argc = argcount; m_udfs.push_back(udf); return true; } return false; }