public function add_subscription() { if ($this->is_post()) { try { $subscription = new PlanetSubscription(); $subscription->cp($this->vars()); $subscription->save(); $this->redirect_method('index'); } catch (Exception $e) { Exceptions::add($e); } } }
protected function __create_verify__($commit) { if ($this->type == 'favorite') { try { $timeline = C(__CLASS__)->find_get(Q::eq('type', 'favorite'), Q::eq('maintainer_id', $this->maintainer_id), Q::eq('package_id', $this->package_id)); if ($timeline instanceof OpenpearTimeline) { Exceptions::add(new RuntimeException()); return false; } } catch (NotfoundDaoException $e) { # pass } catch (Exception $e) { Log::debug($e); } } }
public function login_condition(Request $request) { if ($request->user() instanceof OpenpearMaintainer) { return true; } if ($request->is_post() && $request->is_vars('login') && $request->is_vars('password')) { try { $user = C(OpenpearMaintainer)->find_get(Q::ob(Q::b(Q::eq('name', $request->in_vars('login'))), Q::b(Q::eq('mail', $request->in_vars('login'))))); if ($user instanceof OpenpearMaintainer) { if ($user->certify($request->in_vars('password'))) { $request->user($user); return true; } else { Exceptions::add(new Exception('password is incorrect'), 'password'); } } } catch (Exception $e) { Log::debug($e); } } return false; }
private static function parse_map(Tag $map_tag, $url, $path, $scope, $base_class, $secure, $update, $map_index, $get_meta) { $params = $args = $vars = $modules = $meta = array(); if (!$map_tag->is_param('class')) { $map_tag->param('class', $base_class); } $params['url'] = $url; $params['scope'] = $scope; $params['map_index'] = $map_index; $params['redirect'] = File::path_slash($map_tag->in_param('redirect'), false, false); $params['template'] = File::path_slash($map_tag->in_param('template'), false, false); $params['secure'] = $map_tag->in_param('secure', $secure) === 'true'; $params['update'] = $map_tag->in_param('update', $update) === 'true'; if (!empty($params['template']) && !empty($path)) { $params['template'] = $path . '/' . $params['template']; } foreach (array('class', 'method', 'name') as $c) { $params[$c] = $map_tag->in_param($c); } foreach ($map_tag->in('module') as $t) { $modules[] = self::parse_module($t); } foreach ($map_tag->in('var') as $t) { $vars[] = self::parse_var($t); } foreach ($map_tag->in('arg') as $a) { $args[$a->in_param('name')] = $a->in_param('value', $a->value()); } if ($get_meta) { $meta['summary'] = $map_tag->in_param('summary'); } list($params['vars'], $params['modules'], $params['args'], $params['meta']) = array($vars, $modules, $args, $meta); if (!empty($params['class']) && empty($params['method'])) { Exceptions::add(new InvalidArgumentException('map `' . $map_tag->plain() . '` method not found')); } if (!empty($params['method']) && empty($params['class'])) { Exceptions::add(new InvalidArgumentException('map `' . $map_tag->plain() . '` class not found')); } return $params; }
/** * 新規作成時検証 */ protected function __create_verify__($commit) { if (!$this->new_password()) { Exceptions::add(new Exception('Subversion Password is required'), 'new_password'); } if (!$this->new_password_conf() || $this->new_password() !== $this->new_password_conf()) { Exceptions::add(new Exception('Incorrect Confirm Password'), 'new_password_conf'); } }
private final function save_verify() { foreach ($this->self_columns() as $name => $column) { $type = $this->a($name, "type"); $value = $this->{$name}; if ($this->a($name, "require") === true && ($value === "" || $value === null)) { Exceptions::add(new Exception($name . " required")); } if ($this->a($name, "unique") === true) { $q = array(Q::eq($name, $value)); foreach ($this->primary_columns() as $column) { if (null !== ($value = $this->{$column->name()}())) { $q[] = Q::neq($column->name(), $this->{$column->name()}()); } } if (0 < call_user_func_array(array(C($this), "find_count"), $q)) { Exceptions::add(new Exception($name . " unique")); } } } foreach ($this->self_columns() as $column) { if (!$this->{"is" . ucfirst($column->name())}()) { Exceptions::add(new Exception("verify fail")); } } $this->__save_verify__(); Exceptions::validation(); }
/** * ファイルアップロードからリリース * @param string $package_name パッケージ名 **/ public function package_release_by_upload($package_name) { $package = C(OpenpearPackage)->find_get(Q::eq('name', $package_name)); $package->permission($this->user()); if ($this->is_post() && $this->is_files('package_file') && $this->verify()) { try { $package_file = $this->in_files('package_file'); $package_file->generate(work_path('upload/' . $package_name . '-' . date('YmdHis') . '.tgz')); if ($package_xml = simplexml_load_file(sprintf('phar://%s/package.xml', $package_file->fullname()))) { if ($package_xml->name != $package->name()) { throw new OpenpearException(Gettext::trans('incorrect package name')); } if ($package_xml->channel != OpenpearConfig::pear_domain('openpear.org')) { $package_xml->channel = OpenpearConfig::pear_domain('openpear.org'); $pd = new PharData($package_file->fullname()); $pd->addFromString('package.xml', $package_xml->asXML()); unset($pd); } $upload_queue = new stdClass(); $upload_queue->package_id = $package->id(); $upload_queue->package_file = $package_file->fullname(); $upload_queue->maintainer_id = $this->user()->id(); $queue = new OpenpearQueue('type=upload_release'); $queue->data(serialize($upload_queue)); $queue->save(); $message = new OpenpearMessage('type=system_notice,mail=false'); $message->maintainer_to_id($this->user()->id()); $message->subject(trans('リリースキューに追加されました')); $message->description(trans('{1}のリリースを受け付けました。リリースの完了後,メールでお知らせします。', $package->name())); $message->save(); $this->redirect_by_map('dashboard'); } } catch (Exception $e) { Log::debug($e); Exceptions::add($e); } } $this->vars('package', $package); $this->vars('package_id', $package->id()); }
protected function __verify_external_repository__() { if ($this->repository_uri_select() == 2) { if (empty($this->external_repository)) { Exceptions::add(new OpenpearException('External Repository is required'), 'external_repository'); } } }
private function session_init() { $this->login_id = __CLASS__ . '_LOGIN_'; $this->sessions =& $_SESSION; $vars = $this->in_sessions('_saved_vars_'); if (is_array($vars)) { foreach ($vars as $key => $value) { $this->vars($key, $value); } } $this->rm_sessions('_saved_vars_'); $exceptions = $this->in_sessions('_saved_exceptions_'); if (is_array($exceptions)) { foreach ($exceptions as $e) { Exceptions::add($e[0], $e[1]); } } $this->rm_sessions('_saved_exceptions_'); }
protected function __verify_package_baseinstalldir__() { if (!preg_match('@^[A-Za-z0-9\\.\\/\\_\\-]+$@', $this->package_baseinstalldir)) { Exceptions::add(new OpenpearException(), 'package_baseinstalldir'); } }
protected function __save_verify__() { if ($this->type() !== 'system' && $this->type() !== 'system_notice' && !$this->is_maintainer_from_id()) { Exceptions::add(new OpenpearException('maintainer_from_id required'), 'maintainer_from_id'); } }