/** * Generates the SQL to describe the table creation options * * @param string $table * @param string $schema * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, tableOptions){ zval *table = NULL, *schema = NULL, *sql = NULL, *part_sql = NULL; zval *r0 = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &table, &schema) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!schema) { PHALCON_ALLOC_ZVAL_MM(schema); ZVAL_NULL(schema); } PHALCON_INIT_VAR(sql); ZVAL_STRING(sql, "SELECT TABLES.TABLE_TYPE,TABLES.AUTO_INCREMENT,TABLES.ENGINE,TABLES.TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES WHERE ", 1); if (zend_is_true(schema)) { PHALCON_INIT_VAR(part_sql); PHALCON_CONCAT_SVSVS(part_sql, "TABLES.TABLE_SCHEMA = \"", schema, "\" AND TABLES.TABLE_NAME = \"", table, "\""); PHALCON_ALLOC_ZVAL_MM(r0); PHALCON_CONCAT_SVSVS(r0, "TABLES.TABLE_SCHEMA = \"", schema, "\" AND TABLES.TABLE_NAME = \"", table, "\""); phalcon_concat_self(&sql, r0 TSRMLS_CC); } else { PHALCON_INIT_VAR(part_sql); PHALCON_CONCAT_SVS(part_sql, "TABLES.TABLE_NAME = \"", table, "\""); phalcon_concat_self(&sql, part_sql TSRMLS_CC); } RETURN_CTOR(sql); }
/** * Generates SQL to query indexes on a table * * @param string $table * @param string $schema * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, describeIndexes){ zval *table = NULL, *schema = NULL, *sql = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &table, &schema) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!schema) { PHALCON_ALLOC_ZVAL_MM(schema); ZVAL_NULL(schema); } if (zend_is_true(schema)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVSVS(sql, "SHOW INDEXES FROM `", schema, "`.`", table, "`"); } else { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVS(sql, "SHOW INDEXES FROM `", table, "`"); } RETURN_CTOR(sql); }
/** * Escapes a column/table/schema name * * @param string $identifier * @return string */ PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, escapeIdentifier){ zval *identifier, *domain, *name, *escaped = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &identifier) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (Z_TYPE_P(identifier) == IS_ARRAY) { PHALCON_INIT_VAR(domain); phalcon_array_fetch_long(&domain, identifier, 0, PH_NOISY_CC); PHALCON_INIT_VAR(name); phalcon_array_fetch_long(&name, identifier, 1, PH_NOISY_CC); PHALCON_INIT_VAR(escaped); PHALCON_CONCAT_SVSVS(escaped, "`", domain, "`.`", name, "`"); RETURN_CTOR(escaped); } PHALCON_INIT_NVAR(escaped); PHALCON_CONCAT_SVS(escaped, "`", identifier, "`"); RETURN_CTOR(escaped); }
/** * Generates SQL to query foreign keys on a table * * @param string $table * @param string $schema * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Postgresql, describeReferences){ zval *table = NULL, *schema = NULL, *sql = NULL, *final_sql = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &table, &schema) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!schema) { PHALCON_ALLOC_ZVAL_MM(schema); ZVAL_NULL(schema); } PHALCON_INIT_VAR(sql); ZVAL_STRING(sql, "SELECT tc.table_name as TABLE_NAME, kcu.column_name as COLUMN_NAME, tc.constraint_name as CONSTRAINT_NAME, tc.table_catalog as REFERENCED_TABLE_SCHEMA, ccu.table_name AS REFERENCED_TABLE_NAME, ccu.column_name AS REFERENCED_COLUMN_NAME FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name WHERE constraint_type = 'FOREIGN KEY' AND ", 1); if (zend_is_true(schema)) { PHALCON_INIT_VAR(final_sql); PHALCON_CONCAT_SVSVS(final_sql, "tc.table_schema = '", schema, "' AND tc.table_name='", table, "'"); } else { PHALCON_INIT_VAR(final_sql); PHALCON_CONCAT_SVS(final_sql, "tc.table_name='", table, "'"); } phalcon_concat_self(&sql, final_sql TSRMLS_CC); RETURN_CTOR(sql); }
/** * Generates a SQL describing a table * * <code>print_r($dialect->describeColumns("posts") ?></code> * * @param string $table * @param string $schema * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Postgresql, describeColumns){ zval *table = NULL, *schema = NULL, *sql = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &table, &schema) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!schema) { PHALCON_ALLOC_ZVAL_MM(schema); ZVAL_NULL(schema); } if (zend_is_true(schema)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVSVS(sql, "SELECT DISTINCT c.column_name AS Field, c.data_type AS Type, c.character_maximum_length AS Size, c.numeric_precision AS NumericSize, c.is_nullable AS Null, CASE WHEN pkc.column_name NOTNULL THEN 'PRI' ELSE '' END AS Key, CASE WHEN c.data_type LIKE '%int%' AND c.column_default LIKE '%nextval%' THEN 'auto_increment' ELSE '' END AS Extra, c.ordinal_position AS Position FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type='PRIMARY KEY') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) WHERE c.table_schema='", schema, "' AND c.table_name='", table, "' ORDER BY c.ordinal_position"); } else { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVS(sql, "SELECT DISTINCT c.column_name AS Field, c.data_type AS Type, c.character_maximum_length AS Size, c.numeric_precision AS NumericSize, c.is_nullable AS Null, CASE WHEN pkc.column_name NOTNULL THEN 'PRI' ELSE '' END AS Key, CASE WHEN c.data_type LIKE '%int%' AND c.column_default LIKE '%nextval%' THEN 'auto_increment' ELSE '' END AS Extra, c.ordinal_position AS Position FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type='PRIMARY KEY') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) WHERE c.table_schema='public' AND c.table_name='", table, "' ORDER BY c.ordinal_position"); } RETURN_CTOR(sql); }
/** * Generates SQL checking for the existence of a schema.table * * <code>echo $dialect->tableExists("posts", "blog")</code> * <code>echo $dialect->tableExists("posts")</code> * * @param string $tableName * @param string $schemaName * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Postgresql, tableExists){ zval *table_name = NULL, *schema_name = NULL, *sql = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &table_name, &schema_name) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!schema_name) { PHALCON_ALLOC_ZVAL_MM(schema_name); ZVAL_NULL(schema_name); } if (zend_is_true(schema_name)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVSVS(sql, "SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = '", schema_name, "' AND table_name='", table_name, "'"); } else { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVS(sql, "SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = 'public' AND table_name='", table_name, "'"); } RETURN_CTOR(sql); }
/** * Generates SQL to query foreign keys on a table * * @param string $table * @param string $schema * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, describeReferences){ zval *table = NULL, *schema = NULL, *sql = NULL, *part_sql = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &table, &schema) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!schema) { PHALCON_ALLOC_ZVAL_MM(schema); ZVAL_NULL(schema); } PHALCON_INIT_VAR(sql); ZVAL_STRING(sql, "SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_SCHEMA,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME IS NOT NULL AND ", 1); if (zend_is_true(schema)) { PHALCON_INIT_VAR(part_sql); PHALCON_CONCAT_SVSVS(part_sql, "CONSTRAINT_SCHEMA = \"", schema, "\" AND TABLE_NAME = \"", table, "\""); phalcon_concat_self(&sql, part_sql TSRMLS_CC); } else { PHALCON_INIT_VAR(part_sql); PHALCON_CONCAT_SVS(part_sql, "TABLE_NAME = \"", table, "\""); phalcon_concat_self(&sql, part_sql TSRMLS_CC); } RETURN_CTOR(sql); }
/** * Generates SQL checking for the existence of a schema.table * * <code>echo $dialect->tableExists("posts", "blog")</code> * <code>echo $dialect->tableExists("posts")</code> * * @param string $tableName * @param string $schemaName * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, tableExists){ zval *table_name = NULL, *schema_name = NULL, *sql = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &table_name, &schema_name) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!schema_name) { PHALCON_ALLOC_ZVAL_MM(schema_name); ZVAL_NULL(schema_name); } if (zend_is_true(schema_name)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVSVS(sql, "SELECT IF(COUNT(*)>0, 1 , 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME`= '", table_name, "' AND `TABLE_SCHEMA`='", schema_name, "'"); } else { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVS(sql, "SELECT IF(COUNT(*)>0, 1 , 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME`='", table_name, "'"); } RETURN_CTOR(sql); }
/** * Generates SQL to delete an index from a table * * @param string $tableName * @param string $schemaName * @param string $indexName * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropIndex){ zval *table_name = NULL, *schema_name = NULL, *index_name = NULL; zval *sql = NULL; zval *r0 = NULL, *r1 = NULL, *r2 = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zzz", &table_name, &schema_name, &index_name) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (zend_is_true(schema_name)) { PHALCON_ALLOC_ZVAL_MM(r0); PHALCON_CONCAT_SVSVS(r0, "ALTER TABLE `", schema_name, "`.`", table_name, "` DROP INDEX "); PHALCON_CPY_WRT(sql, r0); } else { PHALCON_ALLOC_ZVAL_MM(r1); PHALCON_CONCAT_SVS(r1, "ALTER TABLE `", table_name, "` DROP INDEX "); PHALCON_CPY_WRT(sql, r1); } PHALCON_ALLOC_ZVAL_MM(r2); PHALCON_CONCAT_SVS(r2, "`", index_name, "`"); phalcon_concat_self(&sql, r2 TSRMLS_CC); PHALCON_RETURN_CTOR(sql); }
/** * Generates SQL to delete a foreign key from a table * * @param string $tableName * @param string $schemaName * @param string $referenceName * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropForeignKey){ zval *table_name = NULL, *schema_name = NULL, *reference_name = NULL; zval *sql = NULL; zval *r0 = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zzz", &table_name, &schema_name, &reference_name) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (zend_is_true(schema_name)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVSVS(sql, "ALTER TABLE `", schema_name, "`.`", table_name, "` DROP FOREIGN KEY "); } else { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVS(sql, "ALTER TABLE `", table_name, "` DROP FOREIGN KEY "); } PHALCON_ALLOC_ZVAL_MM(r0); PHALCON_CONCAT_SVS(r0, "`", reference_name, "`"); phalcon_concat_self(&sql, r0 TSRMLS_CC); RETURN_CTOR(sql); }
/** * Generates SQL describing a table * * * * @param string $table * @param string $schema * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, describeTable){ zval *table = NULL, *schema = NULL, *sql = NULL; zval *r0 = NULL, *r1 = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &table, &schema) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!schema) { PHALCON_INIT_VAR(schema); ZVAL_NULL(schema); } if (zend_is_true(schema)) { PHALCON_ALLOC_ZVAL_MM(r0); PHALCON_CONCAT_SVSVS(r0, "DESCRIBE `", schema, "`.`", table, "`"); PHALCON_CPY_WRT(sql, r0); } else { PHALCON_ALLOC_ZVAL_MM(r1); PHALCON_CONCAT_SVS(r1, "DESCRIBE `", table, "`"); PHALCON_CPY_WRT(sql, r1); } PHALCON_RETURN_CTOR(sql); }
/** * Escapes a column/table/schema name * * @param string $identifier * @return string */ PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, escapeIdentifier){ zval *identifier, *domain, *name; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 0, &identifier); if (Z_TYPE_P(identifier) == IS_ARRAY) { PHALCON_OBS_VAR(domain); phalcon_array_fetch_long(&domain, identifier, 0, PH_NOISY); PHALCON_OBS_VAR(name); phalcon_array_fetch_long(&name, identifier, 1, PH_NOISY); if (PHALCON_GLOBAL(db).escape_identifiers) { PHALCON_CONCAT_SVSVS(return_value, "`", domain, "`.`", name, "`"); RETURN_MM(); } PHALCON_CONCAT_VSV(return_value, domain, ".", name); RETURN_MM(); } if (PHALCON_GLOBAL(db).escape_identifiers) { PHALCON_CONCAT_SVS(return_value, "`", identifier, "`"); RETURN_MM(); } RETURN_CCTOR(identifier); }
/** * Generates SQL to drop a view * * @param string $viewName * @param string $schemaName * @param boolean $ifExists * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Oracle, dropView){ zval *view_name, *schema_name, *if_exists = NULL, *view = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 2, 1, &view_name, &schema_name, &if_exists); if (!if_exists) { if_exists = PHALCON_GLOBAL(z_true); } if (zend_is_true(schema_name)) { PHALCON_INIT_VAR(view); PHALCON_CONCAT_SVSVS(view, "`", schema_name, "`.`", view_name, "`"); } else { PHALCON_INIT_NVAR(view); PHALCON_CONCAT_SVS(view, "`", view_name, "`"); } if (zend_is_true(if_exists)) { PHALCON_CONCAT_SV(return_value, "DROP VIEW IF EXISTS ", view); } else { PHALCON_CONCAT_SV(return_value, "DROP VIEW ", view); } PHALCON_MM_RESTORE(); }
PHP_METHOD(Phalcon_Debug, getFileLink) { zval **file, **line, **format; phalcon_fetch_params_ex(3, 0, &file, &line, &format); PHALCON_ENSURE_IS_STRING(file); PHALCON_ENSURE_IS_STRING(line); if (Z_TYPE_PP(format) == IS_STRING) { char *tmp, *link; int tmp_len, link_len; zval z_link = zval_used_for_init; tmp = php_str_to_str_ex(Z_STRVAL_PP(format), Z_STRLEN_PP(format), SL("%f"), Z_STRVAL_PP(file), Z_STRLEN_PP(file), &tmp_len, 1, NULL); link = php_str_to_str_ex(tmp, tmp_len, SL("%l"), Z_STRVAL_PP(line), Z_STRLEN_PP(line), &link_len, 1, NULL); ZVAL_STRINGL(&z_link, link, link_len, 0); efree(tmp); PHALCON_CONCAT_SVSVS(return_value, "<a href=\"", &z_link, "\">", *file, "</a>"); efree(link); } else { RETVAL_ZVAL(*file, 1, 0); } }
/** * Generates SQL to add an index to a table * * @param string $tableName * @param string $schemaName * @param Phalcon\Db\IndexInterface $index * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Sqlite, addIndex){ zval *table_name, *schema_name, *index, *sql = NULL, *columns = NULL; zval *quoted_column_list = NULL, *name = NULL; zval *index_type = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 3, 0, &table_name, &schema_name, &index); PHALCON_VERIFY_INTERFACE_EX(index, phalcon_db_indexinterface_ce, phalcon_db_exception_ce, 1); PHALCON_CALL_METHOD(&name, index, "getname"); PHALCON_CALL_METHOD(&index_type, index, "gettype"); PHALCON_INIT_VAR(sql); if (zend_is_true(schema_name)) { if (index_type && Z_TYPE_P(index_type) == IS_STRING && Z_STRLEN_P(index_type) > 0) { PHALCON_CONCAT_SVSVSVSVS(sql, "CREATE ", index_type, " INDEX \"", schema_name, "\".\"", name, "\" ON \"", table_name, "\" ("); } else { PHALCON_CONCAT_SVSVSVS(sql, "CREATE INDEX \"", schema_name, "\".\"", name, "\" ON \"", table_name, "\" ("); } } else if (index_type && Z_TYPE_P(index_type) == IS_STRING && Z_STRLEN_P(index_type) > 0) { PHALCON_CONCAT_SVSVSVS(sql, "CREATE ", index_type, " INDEX \"", name, "\" ON \"", table_name, "\" ("); } else { PHALCON_CONCAT_SVSVS(sql, "CREATE INDEX \"", name, "\" ON \"", table_name, "\" ("); } PHALCON_CALL_METHOD(&columns, index, "getcolumns"); PHALCON_CALL_METHOD("ed_column_list, getThis(), "getcolumnlist", columns); PHALCON_SCONCAT_VS(sql, quoted_column_list, ")"); RETURN_CTOR(sql); }
/** * Generates SQL to drop a table * * @param string $tableName * @param string $schemaName * @param boolean $ifExists * @return boolean */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropTable){ zval *table_name = NULL, *schema_name = NULL, *if_exists = NULL, *table = NULL; zval *sql = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz|z", &table_name, &schema_name, &if_exists) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (!if_exists) { PHALCON_ALLOC_ZVAL_MM(if_exists); ZVAL_BOOL(if_exists, 1); } if (zend_is_true(schema_name)) { PHALCON_INIT_VAR(table); PHALCON_CONCAT_SVSVS(table, "`", schema_name, "`.`", table_name, "`"); } else { PHALCON_INIT_VAR(table); PHALCON_CONCAT_SVS(table, "`", table_name, "`"); } if (zend_is_true(if_exists)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SV(sql, "DROP TABLE IF EXISTS ", table); } else { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SV(sql, "DROP TABLE ", table); } RETURN_CTOR(sql); }
/** * Generates SQL to drop a view * * @param string $viewName * @param string $schemaName * @param boolean $ifExists * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Oracle, dropView){ zval *view_name, *schema_name, *if_exists = NULL, *view = NULL; zval *sql = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 2, 1, &view_name, &schema_name, &if_exists); if (!if_exists) { PHALCON_INIT_VAR(if_exists); ZVAL_BOOL(if_exists, 1); } if (zend_is_true(schema_name)) { PHALCON_INIT_VAR(view); PHALCON_CONCAT_SVSVS(view, "`", schema_name, "`.`", view_name, "`"); } else { PHALCON_INIT_NVAR(view); PHALCON_CONCAT_SVS(view, "`", view_name, "`"); } if (zend_is_true(if_exists)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SV(sql, "DROP VIEW IF EXISTS ", view); } else { PHALCON_INIT_NVAR(sql); PHALCON_CONCAT_SV(sql, "DROP VIEW ", view); } RETURN_CTOR(sql); }
/** * Generates a link to the current version documentation * * @return string */ PHP_METHOD(Phalcon_Debug, getVersion){ zval *version = NULL; PHALCON_MM_GROW(); PHALCON_CALL_METHOD(&version, this_ptr, "getmajorversion"); PHALCON_CONCAT_SVSVS(return_value, "<div class=\"version\">Phalcon Framework <a target=\"_new\" href=\"http://docs.phalconphp.com/en/", version, "/\">", version, "</a></div>"); RETURN_MM(); }
/** * Generates SQL to add an index to a table * * @param string $tableName * @param string $schemaName * @param Phalcon_Db_Index $index * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, addIndex){ zval *table_name = NULL, *schema_name = NULL, *index = NULL, *sql = NULL; zval *r0 = NULL, *r1 = NULL, *r2 = NULL, *r3 = NULL, *r4 = NULL, *r5 = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zzz", &table_name, &schema_name, &index) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (Z_TYPE_P(index) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STR(phalcon_db_exception_ce, "Index parameter must be an instance of Phalcon_Db_Index"); return; } if (zend_is_true(schema_name)) { PHALCON_ALLOC_ZVAL_MM(r0); PHALCON_CONCAT_SVSVS(r0, "ALTER TABLE `", schema_name, "`.`", table_name, "` ADD INDEX "); PHALCON_CPY_WRT(sql, r0); } else { PHALCON_ALLOC_ZVAL_MM(r1); PHALCON_CONCAT_SVS(r1, "ALTER TABLE `", table_name, "` ADD INDEX "); PHALCON_CPY_WRT(sql, r1); } PHALCON_ALLOC_ZVAL_MM(r2); PHALCON_ALLOC_ZVAL_MM(r3); PHALCON_CALL_METHOD(r3, index, "getname", PHALCON_NO_CHECK); PHALCON_ALLOC_ZVAL_MM(r4); PHALCON_ALLOC_ZVAL_MM(r5); PHALCON_CALL_METHOD(r5, index, "getcolumns", PHALCON_NO_CHECK); PHALCON_CALL_SELF_PARAMS_1(r4, this_ptr, "getcolumnlist", r5); PHALCON_CONCAT_SVSVS(r2, "`", r3, "` (", r4, ")"); phalcon_concat_self(&sql, r2 TSRMLS_CC); PHALCON_RETURN_CTOR(sql); }
/** * Generates SQL to query indexes on a table * * @param string $table * @param string $schema * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Oracle, describeIndexes){ zval *table, *schema = NULL; phalcon_fetch_params(0, 1, 1, &table, &schema); if (schema && zend_is_true(schema)) { PHALCON_CONCAT_SVSVS(return_value, "SELECT I.TABLE_NAME, 0 AS C0, I.INDEX_NAME, IC.COLUMN_POSITION, IC.COLUMN_NAME FROM ALL_INDEXES I JOIN ALL_IND_COLUMNS IC ON I.INDEX_NAME = IC.INDEX_NAME WHERE I.TABLE_NAME = '", table, "' AND IC.INDEX_OWNER = '", schema, "'"); } else { PHALCON_CONCAT_SVS(return_value, "SELECT I.TABLE_NAME, 0 AS C0, I.INDEX_NAME, IC.COLUMN_POSITION, IC.COLUMN_NAME FROM ALL_INDEXES I JOIN ALL_IND_COLUMNS IC ON I.INDEX_NAME = IC.INDEX_NAME WHERE I.TABLE_NAME = '", table, "'"); } }
/** * Generates a SQL describing a table * *<code> * print_r($dialect->describeColumns("posts")); ?> *</code> * * @param string $table * @param string $schema * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Oracle, describeColumns){ zval *table, *schema = NULL; phalcon_fetch_params(0, 1, 1, &table, &schema); if (schema && zend_is_true(schema)) { PHALCON_CONCAT_SVSVS(return_value, "SELECT TC.COLUMN_NAME, TC.DATA_TYPE, TC.DATA_LENGTH, TC.DATA_PRECISION, TC.DATA_SCALE, TC.NULLABLE, C.CONSTRAINT_TYPE, TC.DATA_DEFAULT, CC.POSITION FROM ALL_TAB_COLUMNS TC LEFT JOIN (ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME AND CC.OWNER = C.OWNER AND C.CONSTRAINT_TYPE = 'P')) ON TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME WHERE TC.TABLE_NAME = '", table, "' AND TC.OWNER = '", schema, "' ORDER BY TC.COLUMN_ID"); } else { PHALCON_CONCAT_SVS(return_value, "SELECT TC.COLUMN_NAME, TC.DATA_TYPE, TC.DATA_LENGTH, TC.DATA_PRECISION, TC.DATA_SCALE, TC.NULLABLE, C.CONSTRAINT_TYPE, TC.DATA_DEFAULT, CC.POSITION FROM ALL_TAB_COLUMNS TC LEFT JOIN (ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME AND CC.OWNER = C.OWNER AND C.CONSTRAINT_TYPE = 'P')) ON TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME WHERE TC.TABLE_NAME = '", table, "' ORDER BY TC.COLUMN_ID"); } }
/** * Generates SQL checking for the existence of a schema.view * * @param string $viewName * @param string $schemaName * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Oracle, viewExists){ zval *view_name, *schema_name = NULL; phalcon_fetch_params(0, 1, 1, &view_name, &schema_name); if (schema_name && zend_is_true(schema_name)) { PHALCON_CONCAT_SVSVS(return_value, "SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END RET FROM ALL_VIEWS WHERE VIEW_NAME='", view_name, "' AND OWNER='", schema_name, "'"); } else { PHALCON_CONCAT_SVS(return_value, "SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END RET FROM ALL_VIEWS WHERE VIEW_NAME='", view_name, "'"); } }
/** * Generates SQL to add an index to a table * * @param string $tableName * @param string $schemaName * @param Phalcon\Db\Index $index * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, addIndex){ zval *table_name = NULL, *schema_name = NULL, *index = NULL, *sql = NULL, *columns = NULL; zval *quoted_column_list = NULL, *name = NULL; zval *r0 = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zzz", &table_name, &schema_name, &index) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (Z_TYPE_P(index) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STR(phalcon_db_exception_ce, "Index parameter must be an instance of Phalcon\\Db\\Index"); return; } if (zend_is_true(schema_name)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVSVS(sql, "ALTER TABLE `", schema_name, "`.`", table_name, "` ADD INDEX "); } else { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVS(sql, "ALTER TABLE `", table_name, "` ADD INDEX "); } PHALCON_INIT_VAR(columns); PHALCON_CALL_METHOD(columns, index, "getcolumns", PH_NO_CHECK); PHALCON_INIT_VAR(quoted_column_list); PHALCON_CALL_METHOD_PARAMS_1(quoted_column_list, this_ptr, "getcolumnlist", columns, PH_NO_CHECK); PHALCON_INIT_VAR(name); PHALCON_CALL_METHOD(name, index, "getname", PH_NO_CHECK); PHALCON_ALLOC_ZVAL_MM(r0); PHALCON_CONCAT_SVSVS(r0, "`", name, "` (", quoted_column_list, ")"); phalcon_concat_self(&sql, r0 TSRMLS_CC); RETURN_CTOR(sql); }
/** * Generates a link to the current version documentation * * @return string */ PHP_METHOD(Phalcon_Debug, getVersion){ zval *version, *version_link; PHALCON_MM_GROW(); PHALCON_INIT_VAR(version); phalcon_call_method(version, this_ptr, "getmajorversion"); PHALCON_INIT_VAR(version_link); PHALCON_CONCAT_SVSVS(version_link, "<div class=\"version\">Phalcon Framework <a target=\"_new\" href=\"http://docs.phalconphp.com/en/", version, "/\">", version, "</a></div>"); RETURN_CTOR(version_link); }
/** * Generate the label of a element added to the form including HTML * * @param string $name * @param array $attributes * @return string */ PHP_METHOD(Phalcon_Forms_Form, label){ zval *name, *elements, *exception_message, *element; zval *label, *html = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &name) == FAILURE) { RETURN_MM_NULL(); } PHALCON_OBS_VAR(elements); phalcon_read_property(&elements, this_ptr, SL("_elements"), PH_NOISY_CC); if (!phalcon_array_isset(elements, name)) { PHALCON_INIT_VAR(exception_message); PHALCON_CONCAT_SVS(exception_message, "Element with ID=", name, " is not part of the form"); PHALCON_THROW_EXCEPTION_ZVAL(phalcon_forms_exception_ce, exception_message); return; } PHALCON_OBS_VAR(element); phalcon_array_fetch(&element, elements, name, PH_NOISY_CC); PHALCON_INIT_VAR(label); PHALCON_CALL_METHOD(label, element, "getlabel"); if (Z_TYPE_P(label) != IS_NULL) { PHALCON_INIT_VAR(html); PHALCON_CONCAT_SVSVS(html, "<label for=\"", name, "\">", label, "</label>"); } else { PHALCON_INIT_NVAR(html); PHALCON_CONCAT_SVSVS(html, "<label for=\"", name, "\">", name, "</label>"); } RETURN_CTOR(html); }
/** * Generate the HTML to label the element * * @return string */ PHP_METHOD(Phalcon_Forms_Element, label){ zval *label, *attributes, *name = NULL, *html = NULL; PHALCON_MM_GROW(); PHALCON_OBS_VAR(label); phalcon_read_property_this(&label, this_ptr, SL("_label"), PH_NOISY_CC); PHALCON_OBS_VAR(attributes); phalcon_read_property_this(&attributes, this_ptr, SL("_attributes"), PH_NOISY_CC); /** * Check if there is an 'id' attribute defined */ if (phalcon_array_isset_string(attributes, SS("id"))) { PHALCON_OBS_VAR(name); phalcon_array_fetch_string(&name, attributes, SL("id"), PH_NOISY_CC); } else { PHALCON_OBS_NVAR(name); phalcon_read_property_this(&name, this_ptr, SL("_name"), PH_NOISY_CC); } /** * Use the default label or leave the same name as label */ if (zend_is_true(label)) { PHALCON_INIT_VAR(html); PHALCON_CONCAT_SVSVS(html, "<label for=\"", name, "\">", label, "</label>"); } else { PHALCON_INIT_NVAR(html); PHALCON_CONCAT_SVSVS(html, "<label for=\"", name, "\">", name, "</label>"); } RETURN_CTOR(html); }
/** * Generates SQL to modify a column in a table * * @param string $tableName * @param string $schemaName * @param Phalcon_Db_Column $column * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, modifyColumn){ zval *table_name = NULL, *schema_name = NULL, *column = NULL, *sql = NULL; zval *r0 = NULL, *r1 = NULL, *r2 = NULL, *r3 = NULL, *r4 = NULL, *r5 = NULL; zval *t0 = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zzz", &table_name, &schema_name, &column) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (Z_TYPE_P(column) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STR(phalcon_db_exception_ce, "Column parameter must be an instance of Phalcon_Db_Column"); return; } if (zend_is_true(schema_name)) { PHALCON_ALLOC_ZVAL_MM(r0); PHALCON_CONCAT_SVSVS(r0, "ALTER TABLE `", schema_name, "`.`", table_name, "` MODIFY "); PHALCON_CPY_WRT(sql, r0); } else { PHALCON_ALLOC_ZVAL_MM(r1); PHALCON_CONCAT_SVS(r1, "ALTER TABLE `", table_name, "` MODIFY "); PHALCON_CPY_WRT(sql, r1); } PHALCON_ALLOC_ZVAL_MM(r2); PHALCON_ALLOC_ZVAL_MM(r3); PHALCON_CALL_METHOD(r3, column, "getname", PHALCON_NO_CHECK); PHALCON_ALLOC_ZVAL_MM(r4); PHALCON_CALL_SELF_PARAMS_1(r4, this_ptr, "getcolumndefinition", column); PHALCON_CONCAT_SVSV(r2, "`", r3, "` ", r4); phalcon_concat_self(&sql, r2 TSRMLS_CC); PHALCON_ALLOC_ZVAL_MM(r5); PHALCON_CALL_METHOD(r5, column, "isnotnull", PHALCON_NO_CHECK); if (zend_is_true(r5)) { PHALCON_INIT_VAR(t0); ZVAL_STRING(t0, " NOT NULL", 1); phalcon_concat_self(&sql, t0 TSRMLS_CC); } PHALCON_RETURN_CTOR(sql); }
/** * Generates SQL to delete an index from a table * * @param string $tableName * @param string $schemaName * @param string $indexName * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Sqlite, dropIndex){ zval *table_name, *schema_name, *index_name; zval *sql = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 3, 0, &table_name, &schema_name, &index_name); PHALCON_INIT_VAR(sql); if (zend_is_true(schema_name)) { PHALCON_CONCAT_SVSVS(sql, "DROP INDEX \"", schema_name, "\".\"", index_name, "\""); } else { PHALCON_CONCAT_SVS(sql, "DROP INDEX \"", index_name, "\""); } RETURN_CTOR(sql); }
/** * Generates SQL to delete primary key from a table * * @param string $tableName * @param string $schemaName * @return string */ PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropPrimaryKey){ zval *table_name = NULL, *schema_name = NULL, *sql = NULL; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &table_name, &schema_name) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (zend_is_true(schema_name)) { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVSVS(sql, "ALTER TABLE `", schema_name, "`.`", table_name, "` DROP PRIMARY KEY"); } else { PHALCON_INIT_VAR(sql); PHALCON_CONCAT_SVS(sql, "ALTER TABLE `", table_name, "` DROP PRIMARY KEY"); } RETURN_CTOR(sql); }
/** * Escapes a column/table/schema name * *<code> * $escapedTable = $connection->escapeIdentifier('robots'); * $escapedTable = $connection->escapeIdentifier(array('store', 'robots')); *</code> * * @param string $identifier * @return string */ PHP_METHOD(Phalcon_Db_Adapter_Pdo, escapeIdentifier){ zval *identifier, *domain, *name; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 0, &identifier); if (Z_TYPE_P(identifier) == IS_ARRAY) { PHALCON_OBS_VAR(domain); phalcon_array_fetch_long(&domain, identifier, 0, PH_NOISY); PHALCON_OBS_VAR(name); phalcon_array_fetch_long(&name, identifier, 1, PH_NOISY); PHALCON_CONCAT_SVSVS(return_value, "\"", domain, "\".\"", name, "\""); RETURN_MM(); } PHALCON_CONCAT_SVS(return_value, "\"", identifier, "\""); RETURN_MM(); }