Beispiel #1
0
 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;
 }