/**
  * 既存のDBからモデルファイルを自動生成する
  **/
 public static function __setup_generate_model__(Request $request, $value)
 {
     if (!$request->is_vars('tables')) {
         throw new RuntimeException('tables required');
     }
     $model_path = $request->is_vars('model_path') ? $request->in_vars('model_path') : path('libs/model');
     $tables = $request->in_vars('tables');
     $tables = strpos(',', $tables) === false ? array($tables) : explode(',', $tables);
     foreach ($tables as $table) {
         $dao = Dao::instant($table, $value);
         $props = $dao->get_columns();
         $properties = array();
         foreach ($props as $prop_name) {
             $property = new ModelProperty();
             $property->name($prop_name);
             foreach (self::$anons as $a) {
                 $anon = $dao->a($prop_name, $a);
                 if (isset(self::$defaults[$prop_name]) && self::$defaults[$prop_name] == $anon) {
                     continue;
                 }
                 if (!is_null($anon)) {
                     $property->annotation($a, $anon);
                 }
             }
             $properties[] = $property;
         }
         $class_name = preg_replace('/_(.)/e', 'ucfirst("\\1")', ucfirst(strtolower($table)));
         $template = new Template();
         $template->vars('properties', $properties);
         $template->vars('class_name', $class_name);
         $filename = File::path($model_path, $class_name . '.php');
         $src = "<?php\n" . $template->read(module_templates('model.php'));
         File::write($filename, $src);
         // unset
         $dao = $template = $properties = $property = null;
         unset($dao);
         unset($template);
         unset($properties);
         unset($property);
     }
 }
 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;
 }
Example #3
0
 public static function login(Request &$request)
 {
     Pea::begin_loose_syntax();
     require_once 'Auth/OpenID/Consumer.php';
     require_once 'Auth/OpenID/FileStore.php';
     require_once 'Auth/OpenID/SReg.php';
     require_once 'Auth/OpenID/PAPE.php';
     if ($request->in_vars('openid_url') != "" || $request->in_vars('openid_verify')) {
         Log::debug("begin openid auth: " . $request->in_vars('openid_url'));
         // OpenID Auth
         $consumer = new Auth_OpenID_Consumer(new Auth_OpenID_FileStore(work_path('openid')));
         if ($request->is_vars('openid_verify')) {
             $response = $consumer->complete($request->request_url());
             if ($response->status == Auth_OpenID_SUCCESS) {
                 return $response->getDisplayIdentifier();
             }
         } else {
             $auth_request = $consumer->begin($request->in_vars('openid_url'));
             if (!$auth_request) {
                 throw new RuntimeException('invalid openid url');
             }
             $sreg_request = Auth_OpenID_SRegRequest::build(array('nickname'), array('fullname', 'email'));
             if ($sreg_request) {
                 $auth_request->addExtension($sreg_request);
             }
             if ($auth_request->shouldSendRedirect()) {
                 $redirect_url = $auth_request->redirectURL(url(), $request->request_url(false) . '?openid_verify=true');
                 if (Auth_OpenID::isFailure($redirect_url)) {
                     throw new RuntimeException("Could not redirect to server: {$redirect_url->message}");
                 } else {
                     $request->redirect($redirect_url);
                 }
             } else {
                 $form_html = $auth_request->htmlMarkup(url(), $request->request_url(false) . '?openid_verify=true', false, array('id' => 'openid_message'));
                 if (Auth_OpenID::isFailure($form_html)) {
                     throw new RuntimeException("Could not redirect to server: {$form_html->message}");
                 } else {
                     echo $form_html;
                     exit;
                 }
             }
         }
     }
     Pea::end_loose_syntax();
     return null;
 }
Example #4
0
 /**
  * デバッグアウトを制御する
  * on / off
  * -level debug / info / warn /error
  * -exception on / off
  */
 public static function __setup_log__(Request $req, $value)
 {
     $src = File::read(App::path("__settings__.php"));
     $level = $req->in_vars("level", Log::current_level());
     $log = 'Log::config_level("' . $level . '",' . ($value == "on" ? "true" : "false") . ');';
     if (preg_match("/Log::config_level\\(.+;/", $src, $match)) {
         $src = str_replace($match[0], $log, $src);
     } else {
         $src = $src . "\n" . $log;
     }
     if ($req->is_vars("exception")) {
         $log = 'Log::config_exception_trace(' . ($req->in_vars("exception") == "on" ? "true" : "false") . ');';
         if (preg_match("/Log::config_exception_trace\\(.+;/", $src, $match)) {
             $src = str_replace($match[0], $log, $src);
         } else {
             $src = $src . "\n" . $log;
         }
     }
     self::update_settings($src);
 }