Sziasztok!
Van egy D6-ra készült modul, amit most átkéne alakítanom D7-re. Eddig még nem foglalkoztam ilyen jellegű fejlesztéssel ezért kérnék tőletek segítséget. Elkezdtem átolvasni az apikat és kiszűrni a különbségeket a D6 és D7 között, de vannak apróságok amiken még elcsúszik a dolog.
Van az alábbi kód:
function template_preprocess_forex(&$variables) { $header = array( array( 'data' => t('Symbol'), 'field' => 'symbol', ), array( 'data' => t('Bid'), 'field' => 'bid', 'class' => 'rightcell', ), array( 'data' => t('Ask'), 'field' => 'ask', 'class' => 'rightcell', ), ); $result = db_query('SELECT * FROM {gft_cache} WHERE forexid IN (%s)' . tablesort_sql($header), variable_get('gft_api_forexids_page', '1,2,3,4')); $variables['header'] = variable_get('gft_api_header', ''); $variables['content'] = theme('table', array('header' => $header, 'rows' => _fetch_quote_table($result), 'attributes' => array('class' => 'gft_page'))); }
Ebből amennyire apiből kiszűrtem a querys rész nem megfelelő. Alapból ez a tablesort_sql nem stimmel, de nem találok számomra átlátható példát, hogyan kéne. Megmutatná valaki, hogy hogyan kéne ez a lekérdezés kinézzen D7-ben? Ez alapján a többit már elvben megtudnám csinálni. :) Ha van még a kódban olyan dolog ami nem D7 kompatibilis akkor szóljatok.
A másik, hogy az install schema se akar jó lenni, de azt nem értem miért. Kivettem belőle a t() fvket a hook_install és a hook_uninstall részeket is manual alapján elvben azok már nem kellenek.
A db mezők létrehozásánál azonban elakad. Ezzel a részel mi a bibi?
/** * Implements hook_schema(). */ function gft_api_schema() { $schema['gft_cache'] = array( 'description' => 'Stores forex feed values in a data table', 'fields' => array( 'forexid' => array( 'type' => 'int', 'unsigned' => TRUE, 'not_null' => TRUE, 'default' => 0, 'description' => 'Forex feed ID from xml', ),'symbol' => array( 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', 'description' => 'Forex feed currency symbol', ), ... return $schema;
Leírás alapján én nem látom, hol van benne hiba.
Kérnék valakit akinek van egy kis ideje és türelme segíteni egy picit a fenti kódrészletekkel az segítsen. Nagyon szépen köszönöm.
Dávid
Van
a schema modul, amivel meglévő táblákról legenerálja a sémát. Gondolom léteznek a tábláid, ha d6-os modulod is használta őket. Szerintem próbáld ki ezt a modult, pont ilyesmire találták ki, lehet vele gyorsítani a fejlesztést.
...Schema structure generation: the module examines the live database and creates Schema API data structures for all tables that match the live database...
Köszi
Köszönöm, ez tök jó modul. Leszedtem a develnek a code upgrade és review moduljait is és kijavítottam pár hibát, de ezekkel a lekérdezéssekel ő se tudott mit kezdeni.
az adatbázisréteg eléggé
az adatbázisréteg eléggé megváltozott d7-ben, azoknak a függvényeit nézd át, valamint a számoknál nem tudom mennyire komálja a db_query, ha aposztrófok közé helyezed, bár lehet fals az infóm, én inkább így írnám:
"INSERT INTO .... VALUES (%d, %d, %d, '%s', '%s')", ... az ask és bid elemei a tömbnek megkövetelik a floatot? (akkor lehet %f, bár nem szoktam használni...)
üdv, tatarbj.
---
Tatár Balázs János
Online SQL query-átalakító Drupal 7-hez
Ezt az oldalt ajánlom a query-k Drupal 7-formára történő konvertálására:
http://upgrade.boombatower.com/tools/sql/inline
Ez alapján:
átalakítva:
ÁTALAKÍTVA:
Hozzáteszem, itt a
'timestamp'
elnevezés egy mezőnek nagyon rossz ötlet, mivel ez egy foglalt kulcsszó ([link], [link]).Így nem is tudom, ez a query megfelelően működik-e.
A lefoglalt szavak közé tartoznak az olyanok is, mint a
log
, az ilyet többnyire query-ben érdemes így írni:`log`
.Remélem nem hibás a query-átalakítás, és valamennyivel közelebb vitt a megoldáshoz.
Hali
Köszönöm szépen a sok hozzászólást. Ezek alapján remélem, már nem lesz gondom az updatettel. :) Még egyszer köszönöm!