Esempio n. 1
0
 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);
         }
     }
 }
Esempio n. 2
0
 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);
         }
     }
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
 /**
  * 新規作成時検証
  */
 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');
     }
 }
Esempio n. 6
0
File: Dao.php Progetto: hisaboh/w2t
 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();
 }
Esempio n. 7
0
 /**
  * ファイルアップロードからリリース
  * @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());
 }
Esempio n. 8
0
 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');
         }
     }
 }
Esempio n. 9
0
 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_');
 }
Esempio n. 10
0
 protected function __verify_package_baseinstalldir__()
 {
     if (!preg_match('@^[A-Za-z0-9\\.\\/\\_\\-]+$@', $this->package_baseinstalldir)) {
         Exceptions::add(new OpenpearException(), 'package_baseinstalldir');
     }
 }
Esempio n. 11
0
 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');
     }
 }