Exemplo n.º 1
0
 /**
  * @param $params
  * @return array
  */
 public function apiMethod($params)
 {
     $response = array('success' => false, 'msg' => 'Error');
     $action = isset($params['action']) ? $params['action'] : '';
     switch ($action) {
         case 'list':
             $moduleRepository = new ModuleRepository($this->workingDir);
             $data = $moduleRepository->getAvailable();
             $filter = isset($params['filter']) ? $params['filter'] : null;
             if ($filter) {
                 $data = array_filter($data, function ($name) use($filter) {
                     return stripos($name, $filter) !== false;
                 });
             }
             $total = count($data);
             $result = array();
             if ($total) {
                 $limit = isset($params['limit']) ? $params['limit'] : 5;
                 $page = isset($params['page']) ? $params['page'] : 1;
                 $offset = $limit * $page - $limit;
                 foreach (array_slice($data, $offset, $limit) as $name) {
                     $info = $this->getPackageInfo($name);
                     if ($info) {
                         $result[$info['name']] = $info;
                     }
                 }
             }
             $response = array('success' => true, 'data' => $result, 'total' => $total);
             break;
         case 'info':
             $response = array('success' => true, 'data' => $this->getPackageInfo($params['name']));
             break;
     }
     return $response;
 }