XׯdddlmZmZddlZddlZddlmZmZmZm Z m Z m Z m Z m Z mZedddZedd ejgd d eejejjd ZdZeddejgd d eejejjdZdS)) DefineModulewbinputsN) node_value node_symbol node_childrenfind_child_nodefind_child_nodestrim_ast ASTHelper dump_tree flatten_node CodeUtilsz Oracle Corp.z1.0)nameauthorversionzwb.sqlide.copyAsPHPConnectz$Copy as PHP Code (Connect to Server)z SQL/UtilitieszCopy Server Connection as PHP)captioninput pluginMenuaccessibilityNamec|jr|j}|jjdkr$dd|jd|jd|jd}n=|jd|jdr |jdnd|jdd |jd}d |z}t j|t j d d S) zPCopies PHP code to connect to the active MySQL connection to the clipboard. MysqlNativeSocketz p:localhosti userNamesocket)hostportuserrdbnamehostNamera$host="%(host)s"; $port=%(port)s; $socket="%(socket)s"; $user="%(user)s"; $password=""; $dbname="%(dbname)s"; $con = new mysqli($host, $user, $password, $dbname, $port, $socket) or die ('Could not connect to the database server' . mysqli_connect_error()); //$con->close(); Copied PHP code to clipboardr) connectiondriverrparameterValues defaultSchemamforms Utilitiesset_clipboard_textAppgetset_status_text)editorconnparamstexts ..\modules\code_utils_grt.pycopyAsPHPConnectr0#s !I  ; 2 2 2")*5+H5+ FF)*5595I&5Q[T)&11W[)*5+ F     ++D111 (()GHHH 1cbtjj|}|D]}t |t ur|\}}}}}}t |} t| d} | rAg} g} d} t| D]}t|dkrtt|dd}|st|d}|r6tt|dkrt|d}ntt|d d}|rt|}nYd }t|}|r6ddl }|d |}|r|d}nt|}| |t#|}||\}}|||}|}t'|d }t)|D]\}||\}}||z}||z}|||}|d|d z||dz}| d|]i}t-| D]E\}}||vr d|||fz| |<||xxdz cc<||ddz||<F|| | fcSdS)Nselect_item_listr select_item select_aliasidentsimple_ident_qexprfieldz([a-zA-Z0-9_]*)variable?z%s%i)grtmodulesMysqlSqlFacadeparseAstFromSqlScripttypestrr rrrlenrr rematchgroupsappendr get_ast_ranger reversedinsert enumerater))queryast_listastsvc_base_begin_end trimmed_astr3columns variablesindexnodealiasr6rr;rFmhelperbeginendoffsetvarsvar duplicatesis r/"_parse_column_name_list_from_queryrfMs{)??FFH:1:1 99   +. (Aq!UFD"3--K.{>..C!'!5!5c!:!:JE3VOE6MC s+D!&5&MC/%+=E$$Q---- %g..;;DAqJ%+q*Q-.@%@ "1 * $.NN1a$8$8$:JqMMgy0000g3 1:1:1r1z wb.sqlide.copyAsPHPQueryAndFetchz)Copy as PHP Code (Iterate SELECT Results)z!Copy Select Iteration as PHP Codec 8|jp|j}t|}|r|\}}}nd}d}|dddd}|dr |dd}d}d}|rXdd|Ddz}d d t|zd d d |Dd}|sddg}d|ddd d|Dd dgt|z||dz}tj |tj ddS)a"Copies PHP code to execute the query and iterate its results to the clipboard. The code will substitute @variables with parameter markers (?) and will bind them with matching PHP variables. The results will be bound to PHP variables matching the SELECTed column names or their aliases. Nz   ;r9rc(g|]}d|ddzS)z $%s = '';r>N.0rcs r/ z*copyAsPHPQueryAndFetch..s%)Z)Z)ZC+ABB*?)Z)Z)Zr1z$stmt->bind_param('rQz', z, c(g|]}d|ddzS)$r>Nrlrms r/roz*copyAsPHPQueryAndFetch..sd`G`G`Gqtadehijikikelal`G`G`Gr1zC); //FIXME: param types: s- string, i- integer, d- double, b- blob field1field2z$query = "%(query)s"; %(vars)s %(var_bind)s if ($stmt = $con->prepare($query)) { $stmt->execute(); $stmt->bind_result(%(column_list)s); while ($stmt->fetch()) { //printf("%(fmt_list)s\n", %(column_list)s); } $stmt->close(); }"z\"cg|]}d|zS)z$%srl)rnrSs r/roz*copyAsPHPQueryAndFetch..s"A"A"Aq57"A"A"Ar1z%s)rN column_listfmt_listrbvar_bindr r) selectedTextscriptrfreplacestripendswithjoinrEr%r&r'r(r)r*)qbuffersqlres column_namesvariable_namesvariable_assignments variable_bindr.s r/copyAsPHPQueryAndFetchrs)   /C -S 1 1C ,/)\>>  ++fc " " * *4 5 5 ; ; = =C ||C#2#hMI#yy)Z)Z>)Z)Z)Z[[^bb|ADESATAT}T}T}TVZV_V_`G`GxF`G`G`GVHVHVHVHI , (+  ;;sE** "A"AL"A"A"ABBQUQZQZ\`[abefrbsbs[sQtQt%"$$ $D ''--- JNN$$%CDDD 1r1)wbrrr?r%sql_reformatterrrrrr r r r r ModuleInfoplugincurrentSQLEditorexportINTclassesdb_query_Editorr0rfcurrentQueryBufferdb_query_QueryBufferrrlr1r/rs .&%%%%%%% TTTTTTTTTTTTTTTTTTTTTT\ ^U S S S  /:`kDjrkDkFkFjGUdxWXX 37CK788% % 98XX% P<1<1<1~ 5@kvQu}vQvSvSuTbqEhii 37CK<==. . >=ii. . . r1