61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Api\Routes;
 | |
| 
 | |
| use Api\Parameter\StringType;
 | |
| use \Api\Request;
 | |
| use Driver\SQL\Column\Column;
 | |
| use Driver\SQL\Condition\CondBool;
 | |
| use Driver\SQL\Condition\Regex;
 | |
| 
 | |
| class Find extends Request {
 | |
| 
 | |
|   public function __construct($user, $externalCall = false) {
 | |
|     parent::__construct($user, $externalCall, array(
 | |
|       'request' => new StringType('request', 128, true, '/')
 | |
|     ));
 | |
| 
 | |
|     $this->isPublic = false;
 | |
|   }
 | |
| 
 | |
|   public function execute($values = array()) {
 | |
|     if(!parent::execute($values)) {
 | |
|       return false;
 | |
|     }
 | |
| 
 | |
|     $request = $this->getParam('request');
 | |
|     if (!startsWith($request, '/')) {
 | |
|       $request = "/$request";
 | |
|     }
 | |
| 
 | |
|     $sql = $this->user->getSQL();
 | |
| 
 | |
|     $res = $sql
 | |
|       ->select("uid", "request", "action", "target", "extra")
 | |
|       ->from("Route")
 | |
|       ->where(new CondBool("active"))
 | |
|       ->where(new Regex($request, new Column("request")))
 | |
|       ->limit(1)
 | |
|       ->execute();
 | |
| 
 | |
|     $this->lastError = $sql->getLastError();
 | |
|     $this->success = ($res !== FALSE);
 | |
| 
 | |
|     if ($this->success) {
 | |
|       if (!empty($res)) {
 | |
|         $row = $res[0];
 | |
|         $this->result["route"] = array(
 | |
|           "uid"     => intval($row["uid"]),
 | |
|           "request" => $row["request"],
 | |
|           "action"  => $row["action"],
 | |
|           "target"  => $row["target"],
 | |
|           "extra"   => $row["extra"]
 | |
|         );
 | |
|       } else {
 | |
|         $this->result["route"] = NULL;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return $this->success;
 | |
|   }
 | |
| } |