public function __construct($path, $parent = NULL) { Charcoal_ParamTrait::validateString(1, $path); Charcoal_ParamTrait::validateIsA(2, 'Charcoal_File', $parent, TRUE); parent::__construct($path, $parent); if (!is_readable(parent::getPath())) { _throw(new Charcoal_FileNotFoundException($this)); } $this->_data = getimagesize(parent::getPath()); if ($this->_data === FALSE) { _throw(new Charcoal_ImageGetSizeException($this)); } }
/** * Generate RDBMS-specific SQL for CREATE TABLE * * @param Charcoal_ITableModel $model table model object related with th query * * @return string SQL */ public function buildCreateTableSQL(Charcoal_ITableModel $model) { Charcoal_ParamTrait::validateIsA(1, 'Charcoal_ITableModel', $model); try { $field_list = $model->getFieldList(); $SQL_field_list = array(); foreach ($field_list as $name) { $pk = $model->getAnnotation($name, 'pk'); $type = $model->getAnnotation($name, 'type'); $notnull = $model->getAnnotation($name, 'notnull'); $charset = $model->getAnnotation($name, 'charset'); $serial = $model->getAnnotation($name, 'serial'); $default = $model->getAnnotation($name, 'default'); $type_name = $this->mapType($type->getValue()); $length = $type->getParameter(); if ($length) { $field_expr = $name . ' ' . $type_name . '(' . $length . ')'; } else { $field_expr = $name . ' ' . $type_name; } if ($pk) { if ($serial) { $field_expr = $name . ' serial primary key'; } if ($notnull) { $field_expr .= ' NOT NULL'; } } else { if ($default) { $field_expr .= ' DEFAULT ' . $default->getValue(); } if ($charset) { $field_expr .= " CHARACTER SET {$charset}"; } if ($notnull) { $field_expr .= ' NOT NULL'; } } $SQL_field_list[] = $field_expr; } $SQL_field_list = implode(",\n", $SQL_field_list); $table_name = $model->getTableName(); $sql = "CREATE TABLE {$table_name} (\n {$SQL_field_list} \n ) \n"; return $sql; } catch (Exception $e) { _throw(new Charcoal_SQLBuilderException("PostgreSQL_SQLBuilder#buildCreateTableSQL failed")); } }
/** * Constructor */ public function __construct($page_info, $where = NULL, $params = NULL, $order_by = NULL, $group_by = NULL) { Charcoal_ParamTrait::validateIsA(1, 'Charcoal_DBPageInfo', $page_info); Charcoal_ParamTrait::validateString(2, $where, TRUE); Charcoal_ParamTrait::validateVector(2, $params, TRUE); Charcoal_ParamTrait::validateString(3, $order_by, TRUE); Charcoal_ParamTrait::validateString(4, $group_by, TRUE); $this->page_info = $page_info; $page = $page_info->getPage(); $page_size = $page_info->getPageSize(); $page = ui($page); $page_size = ui($page_size); $limit = $page_size; $offset = ($page - 1) * $page_size; parent::__construct($where, $params, $order_by, $limit, $offset, $group_by); }
/** * Constructor * * @param simple_html_dom_node $element */ public function __construct($element) { Charcoal_ParamTrait::validateIsA(1, 'simple_html_dom_node', $element); parent::__construct(); $this->element = $element; }
/** * Get framework/project/application file * * @param Charcoal_IEnvironment $env framework's environment variables * @param string $virtual_path virtual path to retrieve, including macro key like '%BASE_DIR%', '%WEBAPP_DIR%', etc. * @param string $filename file name * * @return Charcoal_File file object */ public static function getFile($env, $virtual_path, $filename = NULL) { Charcoal_ParamTrait::validateIsA(1, 'Charcoal_IEnvironment', $env); Charcoal_ParamTrait::validateString(2, $virtual_path); Charcoal_ParamTrait::validateString(3, $filename, TRUE); return new Charcoal_File(self::getPath($env, $virtual_path, $filename)); }
public function validate($sequence, $form_token, $throws = TRUE) { Charcoal_ParamTrait::validateIsA(1, 'Charcoal_ISequence', $sequence); Charcoal_ParamTrait::validateString(2, $form_token); Charcoal_ParamTrait::validateBoolean(3, $throws); $throws = ub($throws); log_debug("debug", "sequence: " . print_r($sequence, true)); log_debug("debug", "form_token: " . print_r($form_token, true)); if ($this->getSandbox()->isDebug() && $this->debug_mode) { ad($sequence, array('title' => "sequence")); } $token_key = $this->token_key; log_debug("debug", "token_key: " . print_r($token_key, true)); if ($this->getSandbox()->isDebug() && $this->debug_mode) { ad($token_key, array('title' => "token_key", "type" => "div")); } // get token container from session. $token_list = $sequence->get(s($token_key)); if ($this->getSandbox()->isDebug() && $this->debug_mode) { ad($token_list, array('title' => "token list")); } log_debug("debug", "token_list: " . print_r($token_list, true)); if ($token_list === NULL || !is_array($token_list)) { $token_list = array(); } // find token from token list. $token_index = NULL; foreach ($token_list as $idx => $token) { log_info("debug", "token: {$token}"); if ($this->getSandbox()->isDebug() && $this->debug_mode) { ad($token, array('title' => "token", "type" => "div")); } if ($token == $form_token) { $token_index = $idx; break; } } if ($token_index === NULL) { // illegal access log_warning("system, debug", "token not found: {$form_token}"); if ($this->getSandbox()->isDebug() && $this->debug_mode) { ad($form_token, array('title' => "token not found", "type" => "div")); } if ($throws) { _throw(new Charcoal_FormTokenValidationException('token not found in sequence:' . $form_token), FALSE); } return FALSE; } else { // authorized access log_debug("debug", "token accepted: {$form_token}"); if ($this->getSandbox()->isDebug() && $this->debug_mode) { ad($form_token, array('title' => "token accepted", "type" => "div")); } // erase token from token list to prevent duplicate form submission. unset($token_list[$token_index]); } // update token list in sequence. $sequence->set($token_key, $token_list); // the event was successfully processed. return TRUE; }
/** * Generate RDBMS-specific SQL for TABLE EXISTS * * @param string $database table schema * @param Charcoal_ITableModel $model table model object related with th query * * @return string SQL */ public function buildExistsTableSQL($database, $model) { Charcoal_ParamTrait::validateString(1, $database); Charcoal_ParamTrait::validateIsA(2, 'Charcoal_ITableModel', $model); try { $table_name = $model->getTableName(); $sql = "SELECT count(*) FROM information_schema.columns WHERE TABLE_NAME = '{$table_name}'"; $sql .= " AND TABLE_SCHEMA = '{$database}'"; log_debug("debug,sql,smart_gateway", "buildExistsTableSQL result: {$sql}", self::TAG); return $sql; } catch (Exception $e) { _throw(new Charcoal_SQLBuilderException("MySQL_SQLBuilder#buildCreateTableSQL failed")); } return ''; }
/** * real implementation of Charcoal_SmartGateway::updateAll() * * @param Charcoal_QueryTarget $query_target description about target model, alias, or joins * @param Charcoal_SQLCriteria $criteria criteria object * @param Charcoal_HashMap|array $data associative array or HashMap object to update * @param Charcoal_String|string $comment comment text * * @return integer count of affected rows */ public function updateAll($comment, $query_target, $criteria, $data) { Charcoal_ParamTrait::validateString(1, $comment, TRUE); Charcoal_ParamTrait::validateIsA(2, 'Charcoal_QueryTarget', $query_target); Charcoal_ParamTrait::validateIsA(3, 'Charcoal_SQLCriteria', $criteria); Charcoal_ParamTrait::validateHashMap(4, $data); $model = $this->getModel($query_target->getModelName()); $alias = $query_target->getAlias(); $dto = $model->createDTO(um($data)); list($sql, $params) = $this->sql_builder->buildUpdateSQL($model, $alias, $dto, $criteria); $sql = !empty($comment) ? $this->sql_builder->prependComment($sql, $comment) : $sql; // log_debug( "debug,smart_gateway,sql", "sql:$sql", self::TAG ); // log_debug( "debug,smart_gateway,sql", "params:" . print_r($params,true), self::TAG ); // SQL実行 $this->data_source->prepareExecute($sql, $params); return $this->data_source->numRows(); }
/** * Generate RDBMS-specific SQL for TRUNCATE TABLE * * @param Charcoal_ITableModel $model table model object related with th query * * @return string SQL */ public function buildTruncateTableSQL($model) { Charcoal_ParamTrait::validateIsA(1, 'Charcoal_ITableModel', $model); $table_name = $model->getTableName(); $sql = "TRUNCATE TABLE `{$table_name}`"; return $sql; }
/** * Set query target */ public function setQueryTarget($query_target) { Charcoal_ParamTrait::validateIsA(1, 'Charcoal_QueryTarget', $query_target); $this->_query_target = $query_target; }
/** * set render target * * @param Charcoal_IRenderTarget array value which should be assigned to the template system */ public function setRenderTarget($render_target) { Charcoal_ParamTrait::validateIsA(1, 'Charcoal_IRenderTarget', $render_target); $this->render_target = $render_target; }