Passed
Push — master ( 9b803d...bcd4f7 )
by Goffy
03:19
created
admin/repositories.php 1 patch
Indentation   +109 added lines, -109 removed lines patch added patch discarded remove patch
@@ -31,116 +31,116 @@
 block discarded – undo
31 31
 // Request repo_id
32 32
 $repoId = Request::getInt('repo_id');
33 33
 switch ($op) {
34
-	case 'list':
35
-	default:
36
-		// Define Stylesheet
37
-		$GLOBALS['xoTheme']->addStylesheet($style, null);
38
-		$start = Request::getInt('start', 0);
39
-		$limit = Request::getInt('limit', $helper->getConfig('adminpager'));
40
-		$templateMain = 'wggithub_admin_repositories.tpl';
41
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('repositories.php'));
42
-		$adminObject->addItemButton(_AM_WGGITHUB_ADD_REPOSITORY, 'repositories.php?op=new', 'add');
43
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
44
-		$repositoriesCount = $repositoriesHandler->getCountRepositories();
45
-		$repositoriesAll = $repositoriesHandler->getAllRepositories($start, $limit);
46
-		$GLOBALS['xoopsTpl']->assign('repositories_count', $repositoriesCount);
47
-		$GLOBALS['xoopsTpl']->assign('wggithub_url', WGGITHUB_URL);
48
-		$GLOBALS['xoopsTpl']->assign('wggithub_upload_url', WGGITHUB_UPLOAD_URL);
49
-		// Table view repositories
50
-		if ($repositoriesCount > 0) {
51
-			foreach (\array_keys($repositoriesAll) as $i) {
52
-				$repository = $repositoriesAll[$i]->getValuesRepositories();
53
-				$GLOBALS['xoopsTpl']->append('repositories_list', $repository);
54
-				unset($repository);
55
-			}
56
-			// Display Navigation
57
-			if ($repositoriesCount > $limit) {
58
-				include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
59
-				$pagenav = new \XoopsPageNav($repositoriesCount, $limit, $start, 'start', 'op=list&limit=' . $limit);
60
-				$GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
61
-			}
62
-		} else {
63
-			$GLOBALS['xoopsTpl']->assign('error', _AM_WGGITHUB_THEREARENT_REPOSITORIES);
64
-		}
65
-		break;
66
-	case 'new':
67
-		$templateMain = 'wggithub_admin_repositories.tpl';
68
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('repositories.php'));
69
-		$adminObject->addItemButton(_AM_WGGITHUB_REPOSITORIES_LIST, 'repositories.php', 'list');
70
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
71
-		// Form Create
72
-		$repositoriesObj = $repositoriesHandler->create();
73
-		$form = $repositoriesObj->getFormRepositories();
74
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
75
-		break;
76
-	case 'save':
77
-		// Security Check
78
-		if (!$GLOBALS['xoopsSecurity']->check()) {
79
-			\redirect_header('repositories.php', 3, \implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
80
-		}
81
-		if ($repoId > 0) {
82
-			$repositoriesObj = $repositoriesHandler->get($repoId);
83
-		} else {
84
-			$repositoriesObj = $repositoriesHandler->create();
85
-		}
86
-		// Set Vars
87
-		$repositoriesObj->setVar('repo_nodeid', Request::getString('repo_nodeid', ''));
88
-		$repositoriesObj->setVar('repo_user', Request::getString('repo_user', ''));
89
-		$repositoriesObj->setVar('repo_name', Request::getString('repo_name', ''));
90
-		$repositoriesObj->setVar('repo_fullname', Request::getString('repo_fullname', ''));
91
-		$repositoryCreatedatObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('repo_createdat'));
92
-		$repositoriesObj->setVar('repo_createdat', $repositoryCreatedatObj->getTimestamp());
93
-		$repositoryUpdatedatObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('repo_updatedat'));
94
-		$repositoriesObj->setVar('repo_updatedat', $repositoryUpdatedatObj->getTimestamp());
95
-		$repositoriesObj->setVar('repo_htmlurl', Request::getString('repo_htmlurl', ''));
34
+    case 'list':
35
+    default:
36
+        // Define Stylesheet
37
+        $GLOBALS['xoTheme']->addStylesheet($style, null);
38
+        $start = Request::getInt('start', 0);
39
+        $limit = Request::getInt('limit', $helper->getConfig('adminpager'));
40
+        $templateMain = 'wggithub_admin_repositories.tpl';
41
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('repositories.php'));
42
+        $adminObject->addItemButton(_AM_WGGITHUB_ADD_REPOSITORY, 'repositories.php?op=new', 'add');
43
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
44
+        $repositoriesCount = $repositoriesHandler->getCountRepositories();
45
+        $repositoriesAll = $repositoriesHandler->getAllRepositories($start, $limit);
46
+        $GLOBALS['xoopsTpl']->assign('repositories_count', $repositoriesCount);
47
+        $GLOBALS['xoopsTpl']->assign('wggithub_url', WGGITHUB_URL);
48
+        $GLOBALS['xoopsTpl']->assign('wggithub_upload_url', WGGITHUB_UPLOAD_URL);
49
+        // Table view repositories
50
+        if ($repositoriesCount > 0) {
51
+            foreach (\array_keys($repositoriesAll) as $i) {
52
+                $repository = $repositoriesAll[$i]->getValuesRepositories();
53
+                $GLOBALS['xoopsTpl']->append('repositories_list', $repository);
54
+                unset($repository);
55
+            }
56
+            // Display Navigation
57
+            if ($repositoriesCount > $limit) {
58
+                include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
59
+                $pagenav = new \XoopsPageNav($repositoriesCount, $limit, $start, 'start', 'op=list&limit=' . $limit);
60
+                $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
61
+            }
62
+        } else {
63
+            $GLOBALS['xoopsTpl']->assign('error', _AM_WGGITHUB_THEREARENT_REPOSITORIES);
64
+        }
65
+        break;
66
+    case 'new':
67
+        $templateMain = 'wggithub_admin_repositories.tpl';
68
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('repositories.php'));
69
+        $adminObject->addItemButton(_AM_WGGITHUB_REPOSITORIES_LIST, 'repositories.php', 'list');
70
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
71
+        // Form Create
72
+        $repositoriesObj = $repositoriesHandler->create();
73
+        $form = $repositoriesObj->getFormRepositories();
74
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
75
+        break;
76
+    case 'save':
77
+        // Security Check
78
+        if (!$GLOBALS['xoopsSecurity']->check()) {
79
+            \redirect_header('repositories.php', 3, \implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
80
+        }
81
+        if ($repoId > 0) {
82
+            $repositoriesObj = $repositoriesHandler->get($repoId);
83
+        } else {
84
+            $repositoriesObj = $repositoriesHandler->create();
85
+        }
86
+        // Set Vars
87
+        $repositoriesObj->setVar('repo_nodeid', Request::getString('repo_nodeid', ''));
88
+        $repositoriesObj->setVar('repo_user', Request::getString('repo_user', ''));
89
+        $repositoriesObj->setVar('repo_name', Request::getString('repo_name', ''));
90
+        $repositoriesObj->setVar('repo_fullname', Request::getString('repo_fullname', ''));
91
+        $repositoryCreatedatObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('repo_createdat'));
92
+        $repositoriesObj->setVar('repo_createdat', $repositoryCreatedatObj->getTimestamp());
93
+        $repositoryUpdatedatObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('repo_updatedat'));
94
+        $repositoriesObj->setVar('repo_updatedat', $repositoryUpdatedatObj->getTimestamp());
95
+        $repositoriesObj->setVar('repo_htmlurl', Request::getString('repo_htmlurl', ''));
96 96
         $repositoriesObj->setVar('repo_prerelease', Request::getInt('repo_prerelease', 0));
97 97
         $repositoriesObj->setVar('repo_release', Request::getInt('repo_release', 0));
98
-		$repositoriesObj->setVar('repo_status', Request::getInt('repo_status', 0));
99
-		$repositoryDatecreatedObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('repo_datecreated'));
100
-		$repositoriesObj->setVar('repo_datecreated', $repositoryDatecreatedObj->getTimestamp());
101
-		$repositoriesObj->setVar('repo_submitter', Request::getInt('repo_submitter', 0));
102
-		// Insert Data
103
-		if ($repositoriesHandler->insert($repositoriesObj)) {
104
-			\redirect_header('repositories.php?op=list', 2, _AM_WGGITHUB_FORM_OK);
105
-		}
106
-		// Get Form
107
-		$GLOBALS['xoopsTpl']->assign('error', $repositoriesObj->getHtmlErrors());
108
-		$form = $repositoriesObj->getFormRepositories();
109
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
110
-		break;
111
-	case 'edit':
112
-		$templateMain = 'wggithub_admin_repositories.tpl';
113
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('repositories.php'));
114
-		$adminObject->addItemButton(_AM_WGGITHUB_ADD_REPOSITORY, 'repositories.php?op=new', 'add');
115
-		$adminObject->addItemButton(_AM_WGGITHUB_REPOSITORIES_LIST, 'repositories.php', 'list');
116
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
117
-		// Get Form
118
-		$repositoriesObj = $repositoriesHandler->get($repoId);
119
-		$form = $repositoriesObj->getFormRepositories();
120
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
121
-		break;
122
-	case 'delete':
123
-		$templateMain = 'wggithub_admin_repositories.tpl';
124
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('repositories.php'));
125
-		$repositoriesObj = $repositoriesHandler->get($repoId);
126
-		$repoName = $repositoriesObj->getVar('repo_name');
127
-		if (isset($_REQUEST['ok']) && 1 == $_REQUEST['ok']) {
128
-			if (!$GLOBALS['xoopsSecurity']->check()) {
129
-				\redirect_header('repositories.php', 3, \implode(', ', $GLOBALS['xoopsSecurity']->getErrors()));
130
-			}
131
-			if ($repositoriesHandler->delete($repositoriesObj)) {
132
-				\redirect_header('repositories.php', 3, _AM_WGGITHUB_FORM_DELETE_OK);
133
-			} else {
134
-				$GLOBALS['xoopsTpl']->assign('error', $repositoriesObj->getHtmlErrors());
135
-			}
136
-		} else {
137
-			$xoopsconfirm = new Common\XoopsConfirm(
138
-				['ok' => 1, 'repo_id' => $repoId, 'op' => 'delete'],
139
-				$_SERVER['REQUEST_URI'],
140
-				\sprintf(_AM_WGGITHUB_FORM_SURE_DELETE, $repositoriesObj->getVar('repo_name')));
141
-			$form = $xoopsconfirm->getFormXoopsConfirm();
142
-			$GLOBALS['xoopsTpl']->assign('form', $form->render());
143
-		}
144
-		break;
98
+        $repositoriesObj->setVar('repo_status', Request::getInt('repo_status', 0));
99
+        $repositoryDatecreatedObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('repo_datecreated'));
100
+        $repositoriesObj->setVar('repo_datecreated', $repositoryDatecreatedObj->getTimestamp());
101
+        $repositoriesObj->setVar('repo_submitter', Request::getInt('repo_submitter', 0));
102
+        // Insert Data
103
+        if ($repositoriesHandler->insert($repositoriesObj)) {
104
+            \redirect_header('repositories.php?op=list', 2, _AM_WGGITHUB_FORM_OK);
105
+        }
106
+        // Get Form
107
+        $GLOBALS['xoopsTpl']->assign('error', $repositoriesObj->getHtmlErrors());
108
+        $form = $repositoriesObj->getFormRepositories();
109
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
110
+        break;
111
+    case 'edit':
112
+        $templateMain = 'wggithub_admin_repositories.tpl';
113
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('repositories.php'));
114
+        $adminObject->addItemButton(_AM_WGGITHUB_ADD_REPOSITORY, 'repositories.php?op=new', 'add');
115
+        $adminObject->addItemButton(_AM_WGGITHUB_REPOSITORIES_LIST, 'repositories.php', 'list');
116
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
117
+        // Get Form
118
+        $repositoriesObj = $repositoriesHandler->get($repoId);
119
+        $form = $repositoriesObj->getFormRepositories();
120
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
121
+        break;
122
+    case 'delete':
123
+        $templateMain = 'wggithub_admin_repositories.tpl';
124
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('repositories.php'));
125
+        $repositoriesObj = $repositoriesHandler->get($repoId);
126
+        $repoName = $repositoriesObj->getVar('repo_name');
127
+        if (isset($_REQUEST['ok']) && 1 == $_REQUEST['ok']) {
128
+            if (!$GLOBALS['xoopsSecurity']->check()) {
129
+                \redirect_header('repositories.php', 3, \implode(', ', $GLOBALS['xoopsSecurity']->getErrors()));
130
+            }
131
+            if ($repositoriesHandler->delete($repositoriesObj)) {
132
+                \redirect_header('repositories.php', 3, _AM_WGGITHUB_FORM_DELETE_OK);
133
+            } else {
134
+                $GLOBALS['xoopsTpl']->assign('error', $repositoriesObj->getHtmlErrors());
135
+            }
136
+        } else {
137
+            $xoopsconfirm = new Common\XoopsConfirm(
138
+                ['ok' => 1, 'repo_id' => $repoId, 'op' => 'delete'],
139
+                $_SERVER['REQUEST_URI'],
140
+                \sprintf(_AM_WGGITHUB_FORM_SURE_DELETE, $repositoriesObj->getVar('repo_name')));
141
+            $form = $xoopsconfirm->getFormXoopsConfirm();
142
+            $GLOBALS['xoopsTpl']->assign('form', $form->render());
143
+        }
144
+        break;
145 145
 }
146 146
 require __DIR__ . '/footer.php';
Please login to merge, or discard this patch.
class/Repositories.php 1 patch
Indentation   +128 added lines, -128 removed lines patch added patch discarded remove patch
@@ -32,85 +32,85 @@  discard block
 block discarded – undo
32 32
  */
33 33
 class Repositories extends \XoopsObject
34 34
 {
35
-	/**
36
-	 * Constructor
37
-	 *
38
-	 * @param null
39
-	 */
40
-	public function __construct()
41
-	{
42
-		$this->initVar('repo_id', XOBJ_DTYPE_INT);
43
-		$this->initVar('repo_nodeid', XOBJ_DTYPE_TXTBOX);
44
-		$this->initVar('repo_user', XOBJ_DTYPE_TXTBOX);
35
+    /**
36
+     * Constructor
37
+     *
38
+     * @param null
39
+     */
40
+    public function __construct()
41
+    {
42
+        $this->initVar('repo_id', XOBJ_DTYPE_INT);
43
+        $this->initVar('repo_nodeid', XOBJ_DTYPE_TXTBOX);
44
+        $this->initVar('repo_user', XOBJ_DTYPE_TXTBOX);
45 45
         $this->initVar('repo_name', XOBJ_DTYPE_TXTBOX);
46
-		$this->initVar('repo_fullname', XOBJ_DTYPE_TXTBOX);
47
-		$this->initVar('repo_createdat', XOBJ_DTYPE_INT);
48
-		$this->initVar('repo_updatedat', XOBJ_DTYPE_INT);
49
-		$this->initVar('repo_htmlurl', XOBJ_DTYPE_TXTBOX);
46
+        $this->initVar('repo_fullname', XOBJ_DTYPE_TXTBOX);
47
+        $this->initVar('repo_createdat', XOBJ_DTYPE_INT);
48
+        $this->initVar('repo_updatedat', XOBJ_DTYPE_INT);
49
+        $this->initVar('repo_htmlurl', XOBJ_DTYPE_TXTBOX);
50 50
         $this->initVar('repo_readme', XOBJ_DTYPE_TXTBOX);
51 51
         $this->initVar('repo_prerelease', XOBJ_DTYPE_TXTBOX);
52 52
         $this->initVar('repo_release', XOBJ_DTYPE_TXTBOX);
53
-		$this->initVar('repo_status', XOBJ_DTYPE_INT);
54
-		$this->initVar('repo_datecreated', XOBJ_DTYPE_INT);
55
-		$this->initVar('repo_submitter', XOBJ_DTYPE_INT);
56
-	}
53
+        $this->initVar('repo_status', XOBJ_DTYPE_INT);
54
+        $this->initVar('repo_datecreated', XOBJ_DTYPE_INT);
55
+        $this->initVar('repo_submitter', XOBJ_DTYPE_INT);
56
+    }
57 57
 
58
-	/**
59
-	 * @static function &getInstance
60
-	 *
61
-	 * @param null
62
-	 */
63
-	public static function getInstance()
64
-	{
65
-		static $instance = false;
66
-		if (!$instance) {
67
-			$instance = new self();
68
-		}
69
-	}
58
+    /**
59
+     * @static function &getInstance
60
+     *
61
+     * @param null
62
+     */
63
+    public static function getInstance()
64
+    {
65
+        static $instance = false;
66
+        if (!$instance) {
67
+            $instance = new self();
68
+        }
69
+    }
70 70
 
71
-	/**
72
-	 * The new inserted $Id
73
-	 * @return inserted id
74
-	 */
75
-	public function getNewInsertedIdRepositories()
76
-	{
77
-		$newInsertedId = $GLOBALS['xoopsDB']->getInsertId();
78
-		return $newInsertedId;
79
-	}
71
+    /**
72
+     * The new inserted $Id
73
+     * @return inserted id
74
+     */
75
+    public function getNewInsertedIdRepositories()
76
+    {
77
+        $newInsertedId = $GLOBALS['xoopsDB']->getInsertId();
78
+        return $newInsertedId;
79
+    }
80 80
 
81
-	/**
82
-	 * @public function getForm
83
-	 * @param bool $action
84
-	 * @return \XoopsThemeForm
85
-	 */
86
-	public function getFormRepositories($action = false)
87
-	{
88
-		$helper = \XoopsModules\Wggithub\Helper::getInstance();
89
-		if (!$action) {
90
-			$action = $_SERVER['REQUEST_URI'];
91
-		}
92
-		// Title
93
-		$title = $this->isNew() ? \sprintf(_AM_WGGITHUB_REPOSITORY_ADD) : \sprintf(_AM_WGGITHUB_REPOSITORY_EDIT);
94
-		// Get Theme Form
95
-		\xoops_load('XoopsFormLoader');
96
-		$form = new \XoopsThemeForm($title, 'form', $action, 'post', true);
97
-		$form->setExtra('enctype="multipart/form-data"');
98
-		// Form Text repoNodeid
99
-		$form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_NODEID, 'repo_nodeid', 50, 255, $this->getVar('repo_nodeid')));
81
+    /**
82
+     * @public function getForm
83
+     * @param bool $action
84
+     * @return \XoopsThemeForm
85
+     */
86
+    public function getFormRepositories($action = false)
87
+    {
88
+        $helper = \XoopsModules\Wggithub\Helper::getInstance();
89
+        if (!$action) {
90
+            $action = $_SERVER['REQUEST_URI'];
91
+        }
92
+        // Title
93
+        $title = $this->isNew() ? \sprintf(_AM_WGGITHUB_REPOSITORY_ADD) : \sprintf(_AM_WGGITHUB_REPOSITORY_EDIT);
94
+        // Get Theme Form
95
+        \xoops_load('XoopsFormLoader');
96
+        $form = new \XoopsThemeForm($title, 'form', $action, 'post', true);
97
+        $form->setExtra('enctype="multipart/form-data"');
98
+        // Form Text repoNodeid
99
+        $form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_NODEID, 'repo_nodeid', 50, 255, $this->getVar('repo_nodeid')));
100 100
         // Form Text repoUser
101 101
         $form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_USER, 'repo_user', 50, 255, $this->getVar('repo_user')), true);
102
-		// Form Text repoName
103
-		$form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_NAME, 'repo_name', 50, 255, $this->getVar('repo_name')), true);
104
-		// Form Text repoFullname
105
-		$form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_FULLNAME, 'repo_fullname', 50, 255, $this->getVar('repo_fullname')));
106
-		// Form Text Date Select repoCreatedat
107
-		$repoCreatedat = $this->isNew() ?: $this->getVar('repo_createdat');
108
-		$form->addElement(new \XoopsFormTextDateSelect(_AM_WGGITHUB_REPOSITORY_CREATEDAT, 'repo_createdat', '', $repoCreatedat));
109
-		// Form Text Date Select repoUpdatedat
110
-		$repoUpdatedat = $this->isNew() ?: $this->getVar('repo_updatedat');
111
-		$form->addElement(new \XoopsFormTextDateSelect(_AM_WGGITHUB_REPOSITORY_UPDATEDAT, 'repo_updatedat', '', $repoUpdatedat));
112
-		// Form Text repoHtmlurl
113
-		$form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_HTMLURL, 'repo_htmlurl', 50, 255, $this->getVar('repo_htmlurl')));
102
+        // Form Text repoName
103
+        $form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_NAME, 'repo_name', 50, 255, $this->getVar('repo_name')), true);
104
+        // Form Text repoFullname
105
+        $form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_FULLNAME, 'repo_fullname', 50, 255, $this->getVar('repo_fullname')));
106
+        // Form Text Date Select repoCreatedat
107
+        $repoCreatedat = $this->isNew() ?: $this->getVar('repo_createdat');
108
+        $form->addElement(new \XoopsFormTextDateSelect(_AM_WGGITHUB_REPOSITORY_CREATEDAT, 'repo_createdat', '', $repoCreatedat));
109
+        // Form Text Date Select repoUpdatedat
110
+        $repoUpdatedat = $this->isNew() ?: $this->getVar('repo_updatedat');
111
+        $form->addElement(new \XoopsFormTextDateSelect(_AM_WGGITHUB_REPOSITORY_UPDATEDAT, 'repo_updatedat', '', $repoUpdatedat));
112
+        // Form Text repoHtmlurl
113
+        $form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_HTMLURL, 'repo_htmlurl', 50, 255, $this->getVar('repo_htmlurl')));
114 114
         // Form Text repoReadme
115 115
         $form->addElement(new \XoopsFormText(_AM_WGGITHUB_REPOSITORY_README, 'repo_readme', 50, 255, $this->getVar('repo_readme')));
116 116
         // Form Text repoPrerelease
@@ -125,72 +125,72 @@  discard block
 block discarded – undo
125 125
         $repoStatusSelect->addOption(Constants::STATUS_UPDATED, _AM_WGGITHUB_STATUS_UPDATED);
126 126
         $form->addElement($repoStatusSelect);
127 127
         // Form Text Date Select repoDatecreated
128
-		$repoDatecreated = $this->isNew() ?: $this->getVar('repo_datecreated');
129
-		$form->addElement(new \XoopsFormTextDateSelect(_AM_WGGITHUB_REPOSITORY_DATECREATED, 'repo_datecreated', '', $repoDatecreated));
130
-		// Form Select User repoSubmitter
131
-		$form->addElement(new \XoopsFormSelectUser(_AM_WGGITHUB_REPOSITORY_SUBMITTER, 'repo_submitter', false, $this->getVar('repo_submitter')));
132
-		// To Save
133
-		$form->addElement(new \XoopsFormHidden('op', 'save'));
134
-		$form->addElement(new \XoopsFormButtonTray('', _SUBMIT, 'submit', '', false));
135
-		return $form;
136
-	}
128
+        $repoDatecreated = $this->isNew() ?: $this->getVar('repo_datecreated');
129
+        $form->addElement(new \XoopsFormTextDateSelect(_AM_WGGITHUB_REPOSITORY_DATECREATED, 'repo_datecreated', '', $repoDatecreated));
130
+        // Form Select User repoSubmitter
131
+        $form->addElement(new \XoopsFormSelectUser(_AM_WGGITHUB_REPOSITORY_SUBMITTER, 'repo_submitter', false, $this->getVar('repo_submitter')));
132
+        // To Save
133
+        $form->addElement(new \XoopsFormHidden('op', 'save'));
134
+        $form->addElement(new \XoopsFormButtonTray('', _SUBMIT, 'submit', '', false));
135
+        return $form;
136
+    }
137 137
 
138
-	/**
139
-	 * Get Values
140
-	 * @param null $keys
141
-	 * @param null $format
142
-	 * @param null $maxDepth
143
-	 * @return array
144
-	 */
145
-	public function getValuesRepositories($keys = null, $format = null, $maxDepth = null)
146
-	{
147
-		$ret = $this->getValues($keys, $format, $maxDepth);
148
-		$ret['id']          = $this->getVar('repo_id');
149
-		$ret['nodeid']      = $this->getVar('repo_nodeid');
138
+    /**
139
+     * Get Values
140
+     * @param null $keys
141
+     * @param null $format
142
+     * @param null $maxDepth
143
+     * @return array
144
+     */
145
+    public function getValuesRepositories($keys = null, $format = null, $maxDepth = null)
146
+    {
147
+        $ret = $this->getValues($keys, $format, $maxDepth);
148
+        $ret['id']          = $this->getVar('repo_id');
149
+        $ret['nodeid']      = $this->getVar('repo_nodeid');
150 150
         $ret['user']        = $this->getVar('repo_user');
151
-		$ret['name']        = $this->getVar('repo_name');
152
-		$ret['fullname']    = $this->getVar('repo_fullname');
153
-		$ret['createdat']   = \formatTimestamp($this->getVar('repo_createdat'), 'm');
154
-		$ret['updatedat']   = \formatTimestamp($this->getVar('repo_updatedat'), 'm');
155
-		$ret['htmlurl']     = $this->getVar('repo_htmlurl');
151
+        $ret['name']        = $this->getVar('repo_name');
152
+        $ret['fullname']    = $this->getVar('repo_fullname');
153
+        $ret['createdat']   = \formatTimestamp($this->getVar('repo_createdat'), 'm');
154
+        $ret['updatedat']   = \formatTimestamp($this->getVar('repo_updatedat'), 'm');
155
+        $ret['htmlurl']     = $this->getVar('repo_htmlurl');
156 156
         $ret['readme']      = $this->getVar('repo_readme');
157 157
         $ret['prerelease']  = $this->getVar('repo_prerelease');
158 158
         $ret['release']     = $this->getVar('repo_release');
159
-		$status             = $this->getVar('repo_status');
160
-		$ret['status']      = $status;
161
-		switch ($status) {
162
-			case Constants::STATUS_NONE:
163
-			default:
164
-				$status_text = \_AM_WGGITHUB_STATUS_NONE;
165
-				break;
159
+        $status             = $this->getVar('repo_status');
160
+        $ret['status']      = $status;
161
+        switch ($status) {
162
+            case Constants::STATUS_NONE:
163
+            default:
164
+                $status_text = \_AM_WGGITHUB_STATUS_NONE;
165
+                break;
166 166
             case Constants::STATUS_NEW:
167 167
                 $status_text = \_AM_WGGITHUB_STATUS_NEW;
168 168
                 break;
169 169
             case Constants::STATUS_UPTODATE:
170
-				$status_text = \_AM_WGGITHUB_STATUS_UPTODATE;
171
-				break;
172
-			case Constants::STATUS_UPDATED:
173
-				$status_text = \_AM_WGGITHUB_STATUS_UPDATED;
174
-				break;
175
-		}
176
-		$ret['status_text'] = $status_text;
177
-		$ret['datecreated'] = \formatTimestamp($this->getVar('repo_datecreated'), 'm');
178
-		$ret['submitter']   = \XoopsUser::getUnameFromId($this->getVar('repo_submitter'));
179
-		return $ret;
180
-	}
170
+                $status_text = \_AM_WGGITHUB_STATUS_UPTODATE;
171
+                break;
172
+            case Constants::STATUS_UPDATED:
173
+                $status_text = \_AM_WGGITHUB_STATUS_UPDATED;
174
+                break;
175
+        }
176
+        $ret['status_text'] = $status_text;
177
+        $ret['datecreated'] = \formatTimestamp($this->getVar('repo_datecreated'), 'm');
178
+        $ret['submitter']   = \XoopsUser::getUnameFromId($this->getVar('repo_submitter'));
179
+        return $ret;
180
+    }
181 181
 
182
-	/**
183
-	 * Returns an array representation of the object
184
-	 *
185
-	 * @return array
186
-	 */
187
-	public function toArrayRepositories()
188
-	{
189
-		$ret = [];
190
-		$vars = $this->getVars();
191
-		foreach (\array_keys($vars) as $var) {
192
-			$ret[$var] = $this->getVar('"{$var}"');
193
-		}
194
-		return $ret;
195
-	}
182
+    /**
183
+     * Returns an array representation of the object
184
+     *
185
+     * @return array
186
+     */
187
+    public function toArrayRepositories()
188
+    {
189
+        $ret = [];
190
+        $vars = $this->getVars();
191
+        foreach (\array_keys($vars) as $var) {
192
+            $ret[$var] = $this->getVar('"{$var}"');
193
+        }
194
+        return $ret;
195
+    }
196 196
 }
Please login to merge, or discard this patch.
admin/settings.php 1 patch
Indentation   +103 added lines, -103 removed lines patch added patch discarded remove patch
@@ -31,113 +31,113 @@
 block discarded – undo
31 31
 // Request set_id
32 32
 $setId = Request::getInt('set_id');
33 33
 switch ($op) {
34
-	case 'list':
35
-	default:
36
-		// Define Stylesheet
37
-		$GLOBALS['xoTheme']->addStylesheet($style, null);
38
-		$start = Request::getInt('start', 0);
39
-		$limit = Request::getInt('limit', $helper->getConfig('adminpager'));
40
-		$templateMain = 'wggithub_admin_settings.tpl';
41
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('settings.php'));
42
-		$adminObject->addItemButton(_AM_WGGITHUB_ADD_SETTING, 'settings.php?op=new', 'add');
43
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
44
-		$settingsCount = $settingsHandler->getCountSettings();
45
-		$settingsAll = $settingsHandler->getAllSettings($start, $limit);
46
-		$GLOBALS['xoopsTpl']->assign('settings_count', $settingsCount);
47
-		$GLOBALS['xoopsTpl']->assign('wggithub_url', WGGITHUB_URL);
48
-		$GLOBALS['xoopsTpl']->assign('wggithub_upload_url', WGGITHUB_UPLOAD_URL);
49
-		// Table view settings
50
-		if ($settingsCount > 0) {
51
-			foreach (\array_keys($settingsAll) as $i) {
52
-				$setting = $settingsAll[$i]->getValuesSettings();
53
-				$GLOBALS['xoopsTpl']->append('settings_list', $setting);
54
-				unset($setting);
55
-			}
56
-			// Display Navigation
57
-			if ($settingsCount > $limit) {
58
-				include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
59
-				$pagenav = new \XoopsPageNav($settingsCount, $limit, $start, 'start', 'op=list&limit=' . $limit);
60
-				$GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
61
-			}
62
-		} else {
63
-			$GLOBALS['xoopsTpl']->assign('error', _AM_WGGITHUB_THEREARENT_SETTINGS);
64
-		}
65
-		break;
66
-	case 'new':
67
-		$templateMain = 'wggithub_admin_settings.tpl';
68
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('settings.php'));
69
-		$adminObject->addItemButton(_AM_WGGITHUB_SETTINGS_LIST, 'settings.php', 'list');
70
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
71
-		// Form Create
72
-		$settingsObj = $settingsHandler->create();
73
-		$form = $settingsObj->getFormSettings();
74
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
75
-		break;
76
-	case 'save':
77
-		// Security Check
78
-		if (!$GLOBALS['xoopsSecurity']->check()) {
79
-			\redirect_header('settings.php', 3, \implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
80
-		}
81
-		if ($setId > 0) {
82
-			$settingsObj = $settingsHandler->get($setId);
83
-		} else {
84
-			$settingsObj = $settingsHandler->create();
85
-		}
86
-		// Set Vars
87
-		$settingsObj->setVar('set_username', Request::getString('set_username', ''));
88
-		$settingsObj->setVar('set_token', Request::getString('set_token', ''));
89
-		$settingsObj->setVar('set_options', Request::getString('set_options', ''));
90
-		$settingsObj->setVar('set_primary', Request::getInt('set_primary', 0));
91
-		$settingDateObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('set_date'));
92
-		$settingsObj->setVar('set_date', $settingDateObj->getTimestamp());
93
-		$settingsObj->setVar('set_submitter', Request::getInt('set_submitter', 0));
94
-		// Insert Data
95
-		if ($settingsHandler->insert($settingsObj)) {
34
+    case 'list':
35
+    default:
36
+        // Define Stylesheet
37
+        $GLOBALS['xoTheme']->addStylesheet($style, null);
38
+        $start = Request::getInt('start', 0);
39
+        $limit = Request::getInt('limit', $helper->getConfig('adminpager'));
40
+        $templateMain = 'wggithub_admin_settings.tpl';
41
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('settings.php'));
42
+        $adminObject->addItemButton(_AM_WGGITHUB_ADD_SETTING, 'settings.php?op=new', 'add');
43
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
44
+        $settingsCount = $settingsHandler->getCountSettings();
45
+        $settingsAll = $settingsHandler->getAllSettings($start, $limit);
46
+        $GLOBALS['xoopsTpl']->assign('settings_count', $settingsCount);
47
+        $GLOBALS['xoopsTpl']->assign('wggithub_url', WGGITHUB_URL);
48
+        $GLOBALS['xoopsTpl']->assign('wggithub_upload_url', WGGITHUB_UPLOAD_URL);
49
+        // Table view settings
50
+        if ($settingsCount > 0) {
51
+            foreach (\array_keys($settingsAll) as $i) {
52
+                $setting = $settingsAll[$i]->getValuesSettings();
53
+                $GLOBALS['xoopsTpl']->append('settings_list', $setting);
54
+                unset($setting);
55
+            }
56
+            // Display Navigation
57
+            if ($settingsCount > $limit) {
58
+                include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
59
+                $pagenav = new \XoopsPageNav($settingsCount, $limit, $start, 'start', 'op=list&limit=' . $limit);
60
+                $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
61
+            }
62
+        } else {
63
+            $GLOBALS['xoopsTpl']->assign('error', _AM_WGGITHUB_THEREARENT_SETTINGS);
64
+        }
65
+        break;
66
+    case 'new':
67
+        $templateMain = 'wggithub_admin_settings.tpl';
68
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('settings.php'));
69
+        $adminObject->addItemButton(_AM_WGGITHUB_SETTINGS_LIST, 'settings.php', 'list');
70
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
71
+        // Form Create
72
+        $settingsObj = $settingsHandler->create();
73
+        $form = $settingsObj->getFormSettings();
74
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
75
+        break;
76
+    case 'save':
77
+        // Security Check
78
+        if (!$GLOBALS['xoopsSecurity']->check()) {
79
+            \redirect_header('settings.php', 3, \implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
80
+        }
81
+        if ($setId > 0) {
82
+            $settingsObj = $settingsHandler->get($setId);
83
+        } else {
84
+            $settingsObj = $settingsHandler->create();
85
+        }
86
+        // Set Vars
87
+        $settingsObj->setVar('set_username', Request::getString('set_username', ''));
88
+        $settingsObj->setVar('set_token', Request::getString('set_token', ''));
89
+        $settingsObj->setVar('set_options', Request::getString('set_options', ''));
90
+        $settingsObj->setVar('set_primary', Request::getInt('set_primary', 0));
91
+        $settingDateObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('set_date'));
92
+        $settingsObj->setVar('set_date', $settingDateObj->getTimestamp());
93
+        $settingsObj->setVar('set_submitter', Request::getInt('set_submitter', 0));
94
+        // Insert Data
95
+        if ($settingsHandler->insert($settingsObj)) {
96 96
             if (Request::getInt('set_primary', 0) > 0) {
97 97
                 $newSetId = $settingsObj->getNewInsertedIdSettings();
98 98
                 $setId = $setId > 0 ? $setId : $newSetId;
99 99
                 $settingsHandler->setPrimarySetting($setId);
100 100
             }
101
-			\redirect_header('settings.php?op=list', 2, _AM_WGGITHUB_FORM_OK);
102
-		}
103
-		// Get Form
104
-		$GLOBALS['xoopsTpl']->assign('error', $settingsObj->getHtmlErrors());
105
-		$form = $settingsObj->getFormSettings();
106
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
107
-		break;
108
-	case 'edit':
109
-		$templateMain = 'wggithub_admin_settings.tpl';
110
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('settings.php'));
111
-		$adminObject->addItemButton(_AM_WGGITHUB_ADD_SETTING, 'settings.php?op=new', 'add');
112
-		$adminObject->addItemButton(_AM_WGGITHUB_SETTINGS_LIST, 'settings.php', 'list');
113
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
114
-		// Get Form
115
-		$settingsObj = $settingsHandler->get($setId);
116
-		$form = $settingsObj->getFormSettings();
117
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
118
-		break;
119
-	case 'delete':
120
-		$templateMain = 'wggithub_admin_settings.tpl';
121
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('settings.php'));
122
-		$settingsObj = $settingsHandler->get($setId);
123
-		$setToken = $settingsObj->getVar('set_token');
124
-		if (isset($_REQUEST['ok']) && 1 == $_REQUEST['ok']) {
125
-			if (!$GLOBALS['xoopsSecurity']->check()) {
126
-				\redirect_header('settings.php', 3, \implode(', ', $GLOBALS['xoopsSecurity']->getErrors()));
127
-			}
128
-			if ($settingsHandler->delete($settingsObj)) {
129
-				\redirect_header('settings.php', 3, _AM_WGGITHUB_FORM_DELETE_OK);
130
-			} else {
131
-				$GLOBALS['xoopsTpl']->assign('error', $settingsObj->getHtmlErrors());
132
-			}
133
-		} else {
134
-			$xoopsconfirm = new Common\XoopsConfirm(
135
-				['ok' => 1, 'set_id' => $setId, 'op' => 'delete'],
136
-				$_SERVER['REQUEST_URI'],
137
-				\sprintf(_AM_WGGITHUB_FORM_SURE_DELETE, $settingsObj->getVar('set_token')));
138
-			$form = $xoopsconfirm->getFormXoopsConfirm();
139
-			$GLOBALS['xoopsTpl']->assign('form', $form->render());
140
-		}
141
-		break;
101
+            \redirect_header('settings.php?op=list', 2, _AM_WGGITHUB_FORM_OK);
102
+        }
103
+        // Get Form
104
+        $GLOBALS['xoopsTpl']->assign('error', $settingsObj->getHtmlErrors());
105
+        $form = $settingsObj->getFormSettings();
106
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
107
+        break;
108
+    case 'edit':
109
+        $templateMain = 'wggithub_admin_settings.tpl';
110
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('settings.php'));
111
+        $adminObject->addItemButton(_AM_WGGITHUB_ADD_SETTING, 'settings.php?op=new', 'add');
112
+        $adminObject->addItemButton(_AM_WGGITHUB_SETTINGS_LIST, 'settings.php', 'list');
113
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
114
+        // Get Form
115
+        $settingsObj = $settingsHandler->get($setId);
116
+        $form = $settingsObj->getFormSettings();
117
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
118
+        break;
119
+    case 'delete':
120
+        $templateMain = 'wggithub_admin_settings.tpl';
121
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('settings.php'));
122
+        $settingsObj = $settingsHandler->get($setId);
123
+        $setToken = $settingsObj->getVar('set_token');
124
+        if (isset($_REQUEST['ok']) && 1 == $_REQUEST['ok']) {
125
+            if (!$GLOBALS['xoopsSecurity']->check()) {
126
+                \redirect_header('settings.php', 3, \implode(', ', $GLOBALS['xoopsSecurity']->getErrors()));
127
+            }
128
+            if ($settingsHandler->delete($settingsObj)) {
129
+                \redirect_header('settings.php', 3, _AM_WGGITHUB_FORM_DELETE_OK);
130
+            } else {
131
+                $GLOBALS['xoopsTpl']->assign('error', $settingsObj->getHtmlErrors());
132
+            }
133
+        } else {
134
+            $xoopsconfirm = new Common\XoopsConfirm(
135
+                ['ok' => 1, 'set_id' => $setId, 'op' => 'delete'],
136
+                $_SERVER['REQUEST_URI'],
137
+                \sprintf(_AM_WGGITHUB_FORM_SURE_DELETE, $settingsObj->getVar('set_token')));
138
+            $form = $xoopsconfirm->getFormXoopsConfirm();
139
+            $GLOBALS['xoopsTpl']->assign('form', $form->render());
140
+        }
141
+        break;
142 142
 }
143 143
 require __DIR__ . '/footer.php';
Please login to merge, or discard this patch.
class/SettingsHandler.php 1 patch
Indentation   +90 added lines, -90 removed lines patch added patch discarded remove patch
@@ -31,96 +31,96 @@
 block discarded – undo
31 31
  */
32 32
 class SettingsHandler extends \XoopsPersistableObjectHandler
33 33
 {
34
-	/**
35
-	 * Constructor
36
-	 *
37
-	 * @param \XoopsDatabase $db
38
-	 */
39
-	public function __construct(\XoopsDatabase $db)
40
-	{
41
-		parent::__construct($db, 'wggithub_settings', Settings::class, 'set_id', 'set_token');
42
-	}
43
-
44
-	/**
45
-	 * @param bool $isNew
46
-	 *
47
-	 * @return object
48
-	 */
49
-	public function create($isNew = true)
50
-	{
51
-		return parent::create($isNew);
52
-	}
53
-
54
-	/**
55
-	 * retrieve a field
56
-	 *
57
-	 * @param int $i field id
58
-	 * @param null fields
59
-	 * @return mixed reference to the {@link Get} object
60
-	 */
61
-	public function get($i = null, $fields = null)
62
-	{
63
-		return parent::get($i, $fields);
64
-	}
65
-
66
-	/**
67
-	 * get inserted id
68
-	 *
69
-	 * @param null
70
-	 * @return int reference to the {@link Get} object
71
-	 */
72
-	public function getInsertId()
73
-	{
74
-		return $this->db->getInsertId();
75
-	}
76
-
77
-	/**
78
-	 * Get Count Settings in the database
79
-	 * @param int    $start
80
-	 * @param int    $limit
81
-	 * @param string $sort
82
-	 * @param string $order
83
-	 * @return int
84
-	 */
85
-	public function getCountSettings($start = 0, $limit = 0, $sort = 'set_id ASC, set_token', $order = 'ASC')
86
-	{
87
-		$crCountSettings = new \CriteriaCompo();
88
-		$crCountSettings = $this->getSettingsCriteria($crCountSettings, $start, $limit, $sort, $order);
89
-		return $this->getCount($crCountSettings);
90
-	}
91
-
92
-	/**
93
-	 * Get All Settings in the database
94
-	 * @param int    $start
95
-	 * @param int    $limit
96
-	 * @param string $sort
97
-	 * @param string $order
98
-	 * @return array
99
-	 */
100
-	public function getAllSettings($start = 0, $limit = 0, $sort = 'set_id ASC, set_token', $order = 'ASC')
101
-	{
102
-		$crAllSettings = new \CriteriaCompo();
103
-		$crAllSettings = $this->getSettingsCriteria($crAllSettings, $start, $limit, $sort, $order);
104
-		return $this->getAll($crAllSettings);
105
-	}
106
-
107
-	/**
108
-	 * Get Criteria Settings
109
-	 * @param        $crSettings
110
-	 * @param int    $start
111
-	 * @param int    $limit
112
-	 * @param string $sort
113
-	 * @param string $order
114
-	 * @return int
115
-	 */
116
-	private function getSettingsCriteria($crSettings, $start, $limit, $sort, $order)
117
-	{
118
-		$crSettings->setStart($start);
119
-		$crSettings->setLimit($limit);
120
-		$crSettings->setSort($sort);
121
-		$crSettings->setOrder($order);
122
-		return $crSettings;
123
-	}
34
+    /**
35
+     * Constructor
36
+     *
37
+     * @param \XoopsDatabase $db
38
+     */
39
+    public function __construct(\XoopsDatabase $db)
40
+    {
41
+        parent::__construct($db, 'wggithub_settings', Settings::class, 'set_id', 'set_token');
42
+    }
43
+
44
+    /**
45
+     * @param bool $isNew
46
+     *
47
+     * @return object
48
+     */
49
+    public function create($isNew = true)
50
+    {
51
+        return parent::create($isNew);
52
+    }
53
+
54
+    /**
55
+     * retrieve a field
56
+     *
57
+     * @param int $i field id
58
+     * @param null fields
59
+     * @return mixed reference to the {@link Get} object
60
+     */
61
+    public function get($i = null, $fields = null)
62
+    {
63
+        return parent::get($i, $fields);
64
+    }
65
+
66
+    /**
67
+     * get inserted id
68
+     *
69
+     * @param null
70
+     * @return int reference to the {@link Get} object
71
+     */
72
+    public function getInsertId()
73
+    {
74
+        return $this->db->getInsertId();
75
+    }
76
+
77
+    /**
78
+     * Get Count Settings in the database
79
+     * @param int    $start
80
+     * @param int    $limit
81
+     * @param string $sort
82
+     * @param string $order
83
+     * @return int
84
+     */
85
+    public function getCountSettings($start = 0, $limit = 0, $sort = 'set_id ASC, set_token', $order = 'ASC')
86
+    {
87
+        $crCountSettings = new \CriteriaCompo();
88
+        $crCountSettings = $this->getSettingsCriteria($crCountSettings, $start, $limit, $sort, $order);
89
+        return $this->getCount($crCountSettings);
90
+    }
91
+
92
+    /**
93
+     * Get All Settings in the database
94
+     * @param int    $start
95
+     * @param int    $limit
96
+     * @param string $sort
97
+     * @param string $order
98
+     * @return array
99
+     */
100
+    public function getAllSettings($start = 0, $limit = 0, $sort = 'set_id ASC, set_token', $order = 'ASC')
101
+    {
102
+        $crAllSettings = new \CriteriaCompo();
103
+        $crAllSettings = $this->getSettingsCriteria($crAllSettings, $start, $limit, $sort, $order);
104
+        return $this->getAll($crAllSettings);
105
+    }
106
+
107
+    /**
108
+     * Get Criteria Settings
109
+     * @param        $crSettings
110
+     * @param int    $start
111
+     * @param int    $limit
112
+     * @param string $sort
113
+     * @param string $order
114
+     * @return int
115
+     */
116
+    private function getSettingsCriteria($crSettings, $start, $limit, $sort, $order)
117
+    {
118
+        $crSettings->setStart($start);
119
+        $crSettings->setLimit($limit);
120
+        $crSettings->setSort($sort);
121
+        $crSettings->setOrder($order);
122
+        return $crSettings;
123
+    }
124 124
 
125 125
     /**
126 126
      * Get Primary Setting
Please login to merge, or discard this patch.
admin/logs.php 1 patch
Indentation   +101 added lines, -101 removed lines patch added patch discarded remove patch
@@ -31,107 +31,107 @@
 block discarded – undo
31 31
 // Request log_id
32 32
 $logId = Request::getInt('log_id');
33 33
 switch ($op) {
34
-	case 'list':
35
-	default:
36
-		// Define Stylesheet
37
-		$GLOBALS['xoTheme']->addStylesheet($style, null);
38
-		$start = Request::getInt('start', 0);
39
-		$limit = Request::getInt('limit', $helper->getConfig('adminpager'));
40
-		$templateMain = 'wggithub_admin_logs.tpl';
41
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('logs.php'));
42
-		$adminObject->addItemButton(_AM_WGGITHUB_ADD_LOG, 'logs.php?op=new', 'add');
43
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
44
-		$logsCount = $logsHandler->getCountLogs();
45
-		$logsAll = $logsHandler->getAllLogs($start, $limit);
46
-		$GLOBALS['xoopsTpl']->assign('logs_count', $logsCount);
47
-		$GLOBALS['xoopsTpl']->assign('wggithub_url', WGGITHUB_URL);
48
-		$GLOBALS['xoopsTpl']->assign('wggithub_upload_url', WGGITHUB_UPLOAD_URL);
49
-		// Table view logs
50
-		if ($logsCount > 0) {
51
-			foreach (\array_keys($logsAll) as $i) {
52
-				$log = $logsAll[$i]->getValuesLogs();
53
-				$GLOBALS['xoopsTpl']->append('logs_list', $log);
54
-				unset($log);
55
-			}
56
-			// Display Navigation
57
-			if ($logsCount > $limit) {
58
-				include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
59
-				$pagenav = new \XoopsPageNav($logsCount, $limit, $start, 'start', 'op=list&limit=' . $limit);
60
-				$GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
61
-			}
62
-		} else {
63
-			$GLOBALS['xoopsTpl']->assign('error', _AM_WGGITHUB_THEREARENT_LOGS);
64
-		}
65
-		break;
66
-	case 'new':
67
-		$templateMain = 'wggithub_admin_logs.tpl';
68
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('logs.php'));
69
-		$adminObject->addItemButton(_AM_WGGITHUB_LOGS_LIST, 'logs.php', 'list');
70
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
71
-		// Form Create
72
-		$logsObj = $logsHandler->create();
73
-		$form = $logsObj->getFormLogs();
74
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
75
-		break;
76
-	case 'save':
77
-		// Security Check
78
-		if (!$GLOBALS['xoopsSecurity']->check()) {
79
-			\redirect_header('logs.php', 3, \implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
80
-		}
81
-		if ($logId > 0) {
82
-			$logsObj = $logsHandler->get($logId);
83
-		} else {
84
-			$logsObj = $logsHandler->create();
85
-		}
86
-		// Set Vars
34
+    case 'list':
35
+    default:
36
+        // Define Stylesheet
37
+        $GLOBALS['xoTheme']->addStylesheet($style, null);
38
+        $start = Request::getInt('start', 0);
39
+        $limit = Request::getInt('limit', $helper->getConfig('adminpager'));
40
+        $templateMain = 'wggithub_admin_logs.tpl';
41
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('logs.php'));
42
+        $adminObject->addItemButton(_AM_WGGITHUB_ADD_LOG, 'logs.php?op=new', 'add');
43
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
44
+        $logsCount = $logsHandler->getCountLogs();
45
+        $logsAll = $logsHandler->getAllLogs($start, $limit);
46
+        $GLOBALS['xoopsTpl']->assign('logs_count', $logsCount);
47
+        $GLOBALS['xoopsTpl']->assign('wggithub_url', WGGITHUB_URL);
48
+        $GLOBALS['xoopsTpl']->assign('wggithub_upload_url', WGGITHUB_UPLOAD_URL);
49
+        // Table view logs
50
+        if ($logsCount > 0) {
51
+            foreach (\array_keys($logsAll) as $i) {
52
+                $log = $logsAll[$i]->getValuesLogs();
53
+                $GLOBALS['xoopsTpl']->append('logs_list', $log);
54
+                unset($log);
55
+            }
56
+            // Display Navigation
57
+            if ($logsCount > $limit) {
58
+                include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
59
+                $pagenav = new \XoopsPageNav($logsCount, $limit, $start, 'start', 'op=list&limit=' . $limit);
60
+                $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
61
+            }
62
+        } else {
63
+            $GLOBALS['xoopsTpl']->assign('error', _AM_WGGITHUB_THEREARENT_LOGS);
64
+        }
65
+        break;
66
+    case 'new':
67
+        $templateMain = 'wggithub_admin_logs.tpl';
68
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('logs.php'));
69
+        $adminObject->addItemButton(_AM_WGGITHUB_LOGS_LIST, 'logs.php', 'list');
70
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
71
+        // Form Create
72
+        $logsObj = $logsHandler->create();
73
+        $form = $logsObj->getFormLogs();
74
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
75
+        break;
76
+    case 'save':
77
+        // Security Check
78
+        if (!$GLOBALS['xoopsSecurity']->check()) {
79
+            \redirect_header('logs.php', 3, \implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
80
+        }
81
+        if ($logId > 0) {
82
+            $logsObj = $logsHandler->get($logId);
83
+        } else {
84
+            $logsObj = $logsHandler->create();
85
+        }
86
+        // Set Vars
87 87
         $logsObj->setVar('log_type', Request::getInt('log_type', 0));
88
-		$logsObj->setVar('log_details', Request::getString('log_details', ''));
89
-		$logsObj->setVar('log_result', Request::getString('log_result', ''));
90
-		$logDatecreatedObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('log_datecreated'));
91
-		$logsObj->setVar('log_datecreated', $logDatecreatedObj->getTimestamp());
92
-		$logsObj->setVar('log_submitter', Request::getInt('log_submitter', 0));
93
-		// Insert Data
94
-		if ($logsHandler->insert($logsObj)) {
95
-			\redirect_header('logs.php?op=list', 2, _AM_WGGITHUB_FORM_OK);
96
-		}
97
-		// Get Form
98
-		$GLOBALS['xoopsTpl']->assign('error', $logsObj->getHtmlErrors());
99
-		$form = $logsObj->getFormLogs();
100
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
101
-		break;
102
-	case 'edit':
103
-		$templateMain = 'wggithub_admin_logs.tpl';
104
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('logs.php'));
105
-		$adminObject->addItemButton(_AM_WGGITHUB_ADD_LOG, 'logs.php?op=new', 'add');
106
-		$adminObject->addItemButton(_AM_WGGITHUB_LOGS_LIST, 'logs.php', 'list');
107
-		$GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
108
-		// Get Form
109
-		$logsObj = $logsHandler->get($logId);
110
-		$form = $logsObj->getFormLogs();
111
-		$GLOBALS['xoopsTpl']->assign('form', $form->render());
112
-		break;
113
-	case 'delete':
114
-		$templateMain = 'wggithub_admin_logs.tpl';
115
-		$GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('logs.php'));
116
-		$logsObj = $logsHandler->get($logId);
117
-		$reqRequest = $logsObj->getVar('log_details');
118
-		if (isset($_REQUEST['ok']) && 1 == $_REQUEST['ok']) {
119
-			if (!$GLOBALS['xoopsSecurity']->check()) {
120
-				\redirect_header('logs.php', 3, \implode(', ', $GLOBALS['xoopsSecurity']->getErrors()));
121
-			}
122
-			if ($logsHandler->delete($logsObj)) {
123
-				\redirect_header('logs.php', 3, _AM_WGGITHUB_FORM_DELETE_OK);
124
-			} else {
125
-				$GLOBALS['xoopsTpl']->assign('error', $logsObj->getHtmlErrors());
126
-			}
127
-		} else {
128
-			$xoopsconfirm = new Common\XoopsConfirm(
129
-				['ok' => 1, 'log_id' => $logId, 'op' => 'delete'],
130
-				$_SERVER['REQUEST_URI'],
131
-				\sprintf(_AM_WGGITHUB_FORM_SURE_DELETE, $logsObj->getVar('log_details')));
132
-			$form = $xoopsconfirm->getFormXoopsConfirm();
133
-			$GLOBALS['xoopsTpl']->assign('form', $form->render());
134
-		}
135
-		break;
88
+        $logsObj->setVar('log_details', Request::getString('log_details', ''));
89
+        $logsObj->setVar('log_result', Request::getString('log_result', ''));
90
+        $logDatecreatedObj = \DateTime::createFromFormat(_SHORTDATESTRING, Request::getString('log_datecreated'));
91
+        $logsObj->setVar('log_datecreated', $logDatecreatedObj->getTimestamp());
92
+        $logsObj->setVar('log_submitter', Request::getInt('log_submitter', 0));
93
+        // Insert Data
94
+        if ($logsHandler->insert($logsObj)) {
95
+            \redirect_header('logs.php?op=list', 2, _AM_WGGITHUB_FORM_OK);
96
+        }
97
+        // Get Form
98
+        $GLOBALS['xoopsTpl']->assign('error', $logsObj->getHtmlErrors());
99
+        $form = $logsObj->getFormLogs();
100
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
101
+        break;
102
+    case 'edit':
103
+        $templateMain = 'wggithub_admin_logs.tpl';
104
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('logs.php'));
105
+        $adminObject->addItemButton(_AM_WGGITHUB_ADD_LOG, 'logs.php?op=new', 'add');
106
+        $adminObject->addItemButton(_AM_WGGITHUB_LOGS_LIST, 'logs.php', 'list');
107
+        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
108
+        // Get Form
109
+        $logsObj = $logsHandler->get($logId);
110
+        $form = $logsObj->getFormLogs();
111
+        $GLOBALS['xoopsTpl']->assign('form', $form->render());
112
+        break;
113
+    case 'delete':
114
+        $templateMain = 'wggithub_admin_logs.tpl';
115
+        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation('logs.php'));
116
+        $logsObj = $logsHandler->get($logId);
117
+        $reqRequest = $logsObj->getVar('log_details');
118
+        if (isset($_REQUEST['ok']) && 1 == $_REQUEST['ok']) {
119
+            if (!$GLOBALS['xoopsSecurity']->check()) {
120
+                \redirect_header('logs.php', 3, \implode(', ', $GLOBALS['xoopsSecurity']->getErrors()));
121
+            }
122
+            if ($logsHandler->delete($logsObj)) {
123
+                \redirect_header('logs.php', 3, _AM_WGGITHUB_FORM_DELETE_OK);
124
+            } else {
125
+                $GLOBALS['xoopsTpl']->assign('error', $logsObj->getHtmlErrors());
126
+            }
127
+        } else {
128
+            $xoopsconfirm = new Common\XoopsConfirm(
129
+                ['ok' => 1, 'log_id' => $logId, 'op' => 'delete'],
130
+                $_SERVER['REQUEST_URI'],
131
+                \sprintf(_AM_WGGITHUB_FORM_SURE_DELETE, $logsObj->getVar('log_details')));
132
+            $form = $xoopsconfirm->getFormXoopsConfirm();
133
+            $GLOBALS['xoopsTpl']->assign('form', $form->render());
134
+        }
135
+        break;
136 136
 }
137 137
 require __DIR__ . '/footer.php';
Please login to merge, or discard this patch.
xoops_version.php 1 patch
Indentation   +224 added lines, -224 removed lines patch added patch discarded remove patch
@@ -25,208 +25,208 @@  discard block
 block discarded – undo
25 25
 $moduleDirNameUpper = \mb_strtoupper($moduleDirName);
26 26
 // ------------------- Informations ------------------- //
27 27
 $modversion = [
28
-	'name'                => _MI_WGGITHUB_NAME,
29
-	'version'             => 1.01,
30
-	'description'         => _MI_WGGITHUB_DESC,
31
-	'author'              => 'Goffy - XOOPS Development Team',
32
-	'author_mail'         => '[email protected]',
33
-	'author_website_url'  => 'https://wedega.com',
34
-	'author_website_name' => 'XOOPS on Wedega',
35
-	'credits'             => 'Goffy - XOOPS Development Team',
36
-	'license'             => 'GPL 2.0 or later',
37
-	'license_url'         => 'http://www.gnu.org/licenses/gpl-3.0.en.html',
38
-	'help'                => 'page=help',
39
-	'release_info'        => 'release_info',
40
-	'release_file'        => XOOPS_URL . '/modules/wggithub/docs/release_info file',
41
-	'release_date'        => '2020/11/21',
42
-	'manual'              => 'link to manual file',
43
-	'manual_file'         => XOOPS_URL . '/modules/wggithub/docs/install.txt',
44
-	'min_php'             => '7.2',
45
-	'min_xoops'           => '2.5.10',
46
-	'min_admin'           => '1.2',
47
-	'min_db'              => ['mysql' => '5.6', 'mysqli' => '5.6'],
48
-	'image'               => 'assets/images/logoModule.png',
49
-	'dirname'             => \basename(__DIR__),
50
-	'dirmoduleadmin'      => 'Frameworks/moduleclasses/moduleadmin',
51
-	'sysicons16'          => '../../Frameworks/moduleclasses/icons/16',
52
-	'sysicons32'          => '../../Frameworks/moduleclasses/icons/32',
53
-	'modicons16'          => 'assets/icons/16',
54
-	'modicons32'          => 'assets/icons/32',
55
-	'demo_site_url'       => 'https://xoops.org',
56
-	'demo_site_name'      => 'XOOPS Demo Site',
57
-	'support_url'         => 'https://xoops.org/modules/newbb',
58
-	'support_name'        => 'Support Forum',
59
-	'module_website_url'  => 'www.xoops.org',
60
-	'module_website_name' => 'XOOPS Project',
61
-	'release'             => '2017-12-02',
62
-	'module_status'       => 'Beta 1',
63
-	'system_menu'         => 1,
64
-	'hasAdmin'            => 1,
65
-	'hasMain'             => 1,
66
-	'adminindex'          => 'admin/index.php',
67
-	'adminmenu'           => 'admin/menu.php',
68
-	'onInstall'           => 'include/install.php',
69
-	'onUninstall'         => 'include/uninstall.php',
70
-	'onUpdate'            => 'include/update.php',
28
+    'name'                => _MI_WGGITHUB_NAME,
29
+    'version'             => 1.01,
30
+    'description'         => _MI_WGGITHUB_DESC,
31
+    'author'              => 'Goffy - XOOPS Development Team',
32
+    'author_mail'         => '[email protected]',
33
+    'author_website_url'  => 'https://wedega.com',
34
+    'author_website_name' => 'XOOPS on Wedega',
35
+    'credits'             => 'Goffy - XOOPS Development Team',
36
+    'license'             => 'GPL 2.0 or later',
37
+    'license_url'         => 'http://www.gnu.org/licenses/gpl-3.0.en.html',
38
+    'help'                => 'page=help',
39
+    'release_info'        => 'release_info',
40
+    'release_file'        => XOOPS_URL . '/modules/wggithub/docs/release_info file',
41
+    'release_date'        => '2020/11/21',
42
+    'manual'              => 'link to manual file',
43
+    'manual_file'         => XOOPS_URL . '/modules/wggithub/docs/install.txt',
44
+    'min_php'             => '7.2',
45
+    'min_xoops'           => '2.5.10',
46
+    'min_admin'           => '1.2',
47
+    'min_db'              => ['mysql' => '5.6', 'mysqli' => '5.6'],
48
+    'image'               => 'assets/images/logoModule.png',
49
+    'dirname'             => \basename(__DIR__),
50
+    'dirmoduleadmin'      => 'Frameworks/moduleclasses/moduleadmin',
51
+    'sysicons16'          => '../../Frameworks/moduleclasses/icons/16',
52
+    'sysicons32'          => '../../Frameworks/moduleclasses/icons/32',
53
+    'modicons16'          => 'assets/icons/16',
54
+    'modicons32'          => 'assets/icons/32',
55
+    'demo_site_url'       => 'https://xoops.org',
56
+    'demo_site_name'      => 'XOOPS Demo Site',
57
+    'support_url'         => 'https://xoops.org/modules/newbb',
58
+    'support_name'        => 'Support Forum',
59
+    'module_website_url'  => 'www.xoops.org',
60
+    'module_website_name' => 'XOOPS Project',
61
+    'release'             => '2017-12-02',
62
+    'module_status'       => 'Beta 1',
63
+    'system_menu'         => 1,
64
+    'hasAdmin'            => 1,
65
+    'hasMain'             => 1,
66
+    'adminindex'          => 'admin/index.php',
67
+    'adminmenu'           => 'admin/menu.php',
68
+    'onInstall'           => 'include/install.php',
69
+    'onUninstall'         => 'include/uninstall.php',
70
+    'onUpdate'            => 'include/update.php',
71 71
 ];
72 72
 // ------------------- Templates ------------------- //
73 73
 $modversion['templates'] = [
74
-	// Admin templates
75
-	['file' => 'wggithub_admin_about.tpl', 'description' => '', 'type' => 'admin'],
76
-	['file' => 'wggithub_admin_header.tpl', 'description' => '', 'type' => 'admin'],
77
-	['file' => 'wggithub_admin_index.tpl', 'description' => '', 'type' => 'admin'],
78
-	['file' => 'wggithub_admin_settings.tpl', 'description' => '', 'type' => 'admin'],
79
-	['file' => 'wggithub_admin_repositories.tpl', 'description' => '', 'type' => 'admin'],
80
-	['file' => 'wggithub_admin_directories.tpl', 'description' => '', 'type' => 'admin'],
81
-	['file' => 'wggithub_admin_logs.tpl', 'description' => '', 'type' => 'admin'],
82
-	['file' => 'wggithub_admin_readmes.tpl', 'description' => '', 'type' => 'admin'],
74
+    // Admin templates
75
+    ['file' => 'wggithub_admin_about.tpl', 'description' => '', 'type' => 'admin'],
76
+    ['file' => 'wggithub_admin_header.tpl', 'description' => '', 'type' => 'admin'],
77
+    ['file' => 'wggithub_admin_index.tpl', 'description' => '', 'type' => 'admin'],
78
+    ['file' => 'wggithub_admin_settings.tpl', 'description' => '', 'type' => 'admin'],
79
+    ['file' => 'wggithub_admin_repositories.tpl', 'description' => '', 'type' => 'admin'],
80
+    ['file' => 'wggithub_admin_directories.tpl', 'description' => '', 'type' => 'admin'],
81
+    ['file' => 'wggithub_admin_logs.tpl', 'description' => '', 'type' => 'admin'],
82
+    ['file' => 'wggithub_admin_readmes.tpl', 'description' => '', 'type' => 'admin'],
83 83
     ['file' => 'wggithub_admin_releases.tpl', 'description' => '', 'type' => 'admin'],
84
-	['file' => 'wggithub_admin_permissions.tpl', 'description' => '', 'type' => 'admin'],
85
-	['file' => 'wggithub_admin_footer.tpl', 'description' => '', 'type' => 'admin'],
86
-	// User templates
87
-	['file' => 'wggithub_header.tpl', 'description' => ''],
88
-	['file' => 'wggithub_index.tpl', 'description' => ''],
89
-	['file' => 'wggithub_repositories.tpl', 'description' => ''],
90
-	['file' => 'wggithub_repositories_list.tpl', 'description' => ''],
91
-	['file' => 'wggithub_repositories_item.tpl', 'description' => ''],
92
-	['file' => 'wggithub_directories.tpl', 'description' => ''],
93
-	['file' => 'wggithub_directories_list.tpl', 'description' => ''],
94
-	['file' => 'wggithub_directories_item.tpl', 'description' => ''],
95
-	['file' => 'wggithub_readmes.tpl', 'description' => ''],
96
-	['file' => 'wggithub_readmes_list.tpl', 'description' => ''],
97
-	['file' => 'wggithub_readmes_item.tpl', 'description' => ''],
98
-	['file' => 'wggithub_breadcrumbs.tpl', 'description' => ''],
99
-	['file' => 'wggithub_search.tpl', 'description' => ''],
100
-	['file' => 'wggithub_footer.tpl', 'description' => ''],
84
+    ['file' => 'wggithub_admin_permissions.tpl', 'description' => '', 'type' => 'admin'],
85
+    ['file' => 'wggithub_admin_footer.tpl', 'description' => '', 'type' => 'admin'],
86
+    // User templates
87
+    ['file' => 'wggithub_header.tpl', 'description' => ''],
88
+    ['file' => 'wggithub_index.tpl', 'description' => ''],
89
+    ['file' => 'wggithub_repositories.tpl', 'description' => ''],
90
+    ['file' => 'wggithub_repositories_list.tpl', 'description' => ''],
91
+    ['file' => 'wggithub_repositories_item.tpl', 'description' => ''],
92
+    ['file' => 'wggithub_directories.tpl', 'description' => ''],
93
+    ['file' => 'wggithub_directories_list.tpl', 'description' => ''],
94
+    ['file' => 'wggithub_directories_item.tpl', 'description' => ''],
95
+    ['file' => 'wggithub_readmes.tpl', 'description' => ''],
96
+    ['file' => 'wggithub_readmes_list.tpl', 'description' => ''],
97
+    ['file' => 'wggithub_readmes_item.tpl', 'description' => ''],
98
+    ['file' => 'wggithub_breadcrumbs.tpl', 'description' => ''],
99
+    ['file' => 'wggithub_search.tpl', 'description' => ''],
100
+    ['file' => 'wggithub_footer.tpl', 'description' => ''],
101 101
 ];
102 102
 // ------------------- Mysql ------------------- //
103 103
 $modversion['sqlfile']['mysql'] = 'sql/mysql.sql';
104 104
 // Tables
105 105
 $modversion['tables'] = [
106
-	'wggithub_settings',
107
-	'wggithub_repositories',
108
-	'wggithub_directories',
109
-	'wggithub_logs',
110
-	'wggithub_readmes',
106
+    'wggithub_settings',
107
+    'wggithub_repositories',
108
+    'wggithub_directories',
109
+    'wggithub_logs',
110
+    'wggithub_readmes',
111 111
     'wggithub_releases',
112 112
 ];
113 113
 // ------------------- Search ------------------- //
114 114
 $modversion['hasSearch'] = 1;
115 115
 $modversion['search'] = [
116
-	'file' => 'include/search.inc.php',
117
-	'func' => 'wggithub_search',
116
+    'file' => 'include/search.inc.php',
117
+    'func' => 'wggithub_search',
118 118
 ];
119 119
 // ------------------- Blocks ------------------- //
120 120
 // Repositories last
121 121
 $modversion['blocks'][] = [
122
-	'file'        => 'repositories.php',
123
-	'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_LAST,
124
-	'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_LAST_DESC,
125
-	'show_func'   => 'b_wggithub_repositories_show',
126
-	'edit_func'   => 'b_wggithub_repositories_edit',
127
-	'template'    => 'wggithub_block_repositories.tpl',
128
-	'options'     => 'last|5|25|0',
122
+    'file'        => 'repositories.php',
123
+    'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_LAST,
124
+    'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_LAST_DESC,
125
+    'show_func'   => 'b_wggithub_repositories_show',
126
+    'edit_func'   => 'b_wggithub_repositories_edit',
127
+    'template'    => 'wggithub_block_repositories.tpl',
128
+    'options'     => 'last|5|25|0',
129 129
 ];
130 130
 // Repositories new
131 131
 $modversion['blocks'][] = [
132
-	'file'        => 'repositories.php',
133
-	'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_NEW,
134
-	'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_NEW_DESC,
135
-	'show_func'   => 'b_wggithub_repositories_show',
136
-	'edit_func'   => 'b_wggithub_repositories_edit',
137
-	'template'    => 'wggithub_block_repositories.tpl',
138
-	'options'     => 'new|5|25|0',
132
+    'file'        => 'repositories.php',
133
+    'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_NEW,
134
+    'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_NEW_DESC,
135
+    'show_func'   => 'b_wggithub_repositories_show',
136
+    'edit_func'   => 'b_wggithub_repositories_edit',
137
+    'template'    => 'wggithub_block_repositories.tpl',
138
+    'options'     => 'new|5|25|0',
139 139
 ];
140 140
 // Repositories hits
141 141
 $modversion['blocks'][] = [
142
-	'file'        => 'repositories.php',
143
-	'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_HITS,
144
-	'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_HITS_DESC,
145
-	'show_func'   => 'b_wggithub_repositories_show',
146
-	'edit_func'   => 'b_wggithub_repositories_edit',
147
-	'template'    => 'wggithub_block_repositories.tpl',
148
-	'options'     => 'hits|5|25|0',
142
+    'file'        => 'repositories.php',
143
+    'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_HITS,
144
+    'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_HITS_DESC,
145
+    'show_func'   => 'b_wggithub_repositories_show',
146
+    'edit_func'   => 'b_wggithub_repositories_edit',
147
+    'template'    => 'wggithub_block_repositories.tpl',
148
+    'options'     => 'hits|5|25|0',
149 149
 ];
150 150
 // Repositories top
151 151
 $modversion['blocks'][] = [
152
-	'file'        => 'repositories.php',
153
-	'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_TOP,
154
-	'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_TOP_DESC,
155
-	'show_func'   => 'b_wggithub_repositories_show',
156
-	'edit_func'   => 'b_wggithub_repositories_edit',
157
-	'template'    => 'wggithub_block_repositories.tpl',
158
-	'options'     => 'top|5|25|0',
152
+    'file'        => 'repositories.php',
153
+    'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_TOP,
154
+    'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_TOP_DESC,
155
+    'show_func'   => 'b_wggithub_repositories_show',
156
+    'edit_func'   => 'b_wggithub_repositories_edit',
157
+    'template'    => 'wggithub_block_repositories.tpl',
158
+    'options'     => 'top|5|25|0',
159 159
 ];
160 160
 // Repositories random
161 161
 $modversion['blocks'][] = [
162
-	'file'        => 'repositories.php',
163
-	'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_RANDOM,
164
-	'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_RANDOM_DESC,
165
-	'show_func'   => 'b_wggithub_repositories_show',
166
-	'edit_func'   => 'b_wggithub_repositories_edit',
167
-	'template'    => 'wggithub_block_repositories.tpl',
168
-	'options'     => 'random|5|25|0',
162
+    'file'        => 'repositories.php',
163
+    'name'        => _MI_WGGITHUB_REPOSITORIES_BLOCK_RANDOM,
164
+    'description' => _MI_WGGITHUB_REPOSITORIES_BLOCK_RANDOM_DESC,
165
+    'show_func'   => 'b_wggithub_repositories_show',
166
+    'edit_func'   => 'b_wggithub_repositories_edit',
167
+    'template'    => 'wggithub_block_repositories.tpl',
168
+    'options'     => 'random|5|25|0',
169 169
 ];
170 170
 // ------------------- Config ------------------- //
171 171
 // Editor Admin
172 172
 \xoops_load('xoopseditorhandler');
173 173
 $editorHandler = XoopsEditorHandler::getInstance();
174 174
 $modversion['config'][] = [
175
-	'name'        => 'editor_admin',
176
-	'title'       => '_MI_WGGITHUB_EDITOR_ADMIN',
177
-	'description' => '_MI_WGGITHUB_EDITOR_ADMIN_DESC',
178
-	'formtype'    => 'select',
179
-	'valuetype'   => 'text',
180
-	'default'     => 'dhtml',
181
-	'options'     => array_flip($editorHandler->getList()),
175
+    'name'        => 'editor_admin',
176
+    'title'       => '_MI_WGGITHUB_EDITOR_ADMIN',
177
+    'description' => '_MI_WGGITHUB_EDITOR_ADMIN_DESC',
178
+    'formtype'    => 'select',
179
+    'valuetype'   => 'text',
180
+    'default'     => 'dhtml',
181
+    'options'     => array_flip($editorHandler->getList()),
182 182
 ];
183 183
 // Editor User
184 184
 \xoops_load('xoopseditorhandler');
185 185
 $editorHandler = XoopsEditorHandler::getInstance();
186 186
 $modversion['config'][] = [
187
-	'name'        => 'editor_user',
188
-	'title'       => '_MI_WGGITHUB_EDITOR_USER',
189
-	'description' => '_MI_WGGITHUB_EDITOR_USER_DESC',
190
-	'formtype'    => 'select',
191
-	'valuetype'   => 'text',
192
-	'default'     => 'dhtml',
193
-	'options'     => array_flip($editorHandler->getList()),
187
+    'name'        => 'editor_user',
188
+    'title'       => '_MI_WGGITHUB_EDITOR_USER',
189
+    'description' => '_MI_WGGITHUB_EDITOR_USER_DESC',
190
+    'formtype'    => 'select',
191
+    'valuetype'   => 'text',
192
+    'default'     => 'dhtml',
193
+    'options'     => array_flip($editorHandler->getList()),
194 194
 ];
195 195
 // Editor : max characters admin area
196 196
 $modversion['config'][] = [
197
-	'name'        => 'editor_maxchar',
198
-	'title'       => '_MI_WGGITHUB_EDITOR_MAXCHAR',
199
-	'description' => '_MI_WGGITHUB_EDITOR_MAXCHAR_DESC',
200
-	'formtype'    => 'textbox',
201
-	'valuetype'   => 'int',
202
-	'default'     => 50,
197
+    'name'        => 'editor_maxchar',
198
+    'title'       => '_MI_WGGITHUB_EDITOR_MAXCHAR',
199
+    'description' => '_MI_WGGITHUB_EDITOR_MAXCHAR_DESC',
200
+    'formtype'    => 'textbox',
201
+    'valuetype'   => 'int',
202
+    'default'     => 50,
203 203
 ];
204 204
 // Get groups
205 205
 $memberHandler = \xoops_getHandler('member');
206 206
 $xoopsGroups  = $memberHandler->getGroupList();
207 207
 $groups = [];
208 208
 foreach ($xoopsGroups as $key => $group) {
209
-	$groups[$group]  = $key;
209
+    $groups[$group]  = $key;
210 210
 }
211 211
 // General access groups
212 212
 $modversion['config'][] = [
213
-	'name'        => 'groups',
214
-	'title'       => '_MI_WGGITHUB_GROUPS',
215
-	'description' => '_MI_WGGITHUB_GROUPS_DESC',
216
-	'formtype'    => 'select_multi',
217
-	'valuetype'   => 'array',
218
-	'default'     => $groups,
219
-	'options'     => $groups,
213
+    'name'        => 'groups',
214
+    'title'       => '_MI_WGGITHUB_GROUPS',
215
+    'description' => '_MI_WGGITHUB_GROUPS_DESC',
216
+    'formtype'    => 'select_multi',
217
+    'valuetype'   => 'array',
218
+    'default'     => $groups,
219
+    'options'     => $groups,
220 220
 ];
221 221
 // Upload groups
222 222
 $modversion['config'][] = [
223
-	'name'        => 'upload_groups',
224
-	'title'       => '_MI_WGGITHUB_UPLOAD_GROUPS',
225
-	'description' => '_MI_WGGITHUB_UPLOAD_GROUPS_DESC',
226
-	'formtype'    => 'select_multi',
227
-	'valuetype'   => 'array',
228
-	'default'     => $groups,
229
-	'options'     => $groups,
223
+    'name'        => 'upload_groups',
224
+    'title'       => '_MI_WGGITHUB_UPLOAD_GROUPS',
225
+    'description' => '_MI_WGGITHUB_UPLOAD_GROUPS_DESC',
226
+    'formtype'    => 'select_multi',
227
+    'valuetype'   => 'array',
228
+    'default'     => $groups,
229
+    'options'     => $groups,
230 230
 ];
231 231
 // Get Admin groups
232 232
 $crGroups = new \CriteriaCompo();
@@ -235,118 +235,118 @@  discard block
 block discarded – undo
235 235
 $adminXoopsGroups  = $memberHandler->getGroupList($crGroups);
236 236
 $adminGroups = [];
237 237
 foreach ($adminXoopsGroups as $key => $adminGroup) {
238
-	$adminGroups[$adminGroup]  = $key;
238
+    $adminGroups[$adminGroup]  = $key;
239 239
 }
240 240
 $modversion['config'][] = [
241
-	'name'        => 'admin_groups',
242
-	'title'       => '_MI_WGGITHUB_ADMIN_GROUPS',
243
-	'description' => '_MI_WGGITHUB_ADMIN_GROUPS_DESC',
244
-	'formtype'    => 'select_multi',
245
-	'valuetype'   => 'array',
246
-	'default'     => $adminGroups,
247
-	'options'     => $adminGroups,
241
+    'name'        => 'admin_groups',
242
+    'title'       => '_MI_WGGITHUB_ADMIN_GROUPS',
243
+    'description' => '_MI_WGGITHUB_ADMIN_GROUPS_DESC',
244
+    'formtype'    => 'select_multi',
245
+    'valuetype'   => 'array',
246
+    'default'     => $adminGroups,
247
+    'options'     => $adminGroups,
248 248
 ];
249 249
 unset($crGroups);
250 250
 // Keywords
251 251
 $modversion['config'][] = [
252
-	'name'        => 'keywords',
253
-	'title'       => '_MI_WGGITHUB_KEYWORDS',
254
-	'description' => '_MI_WGGITHUB_KEYWORDS_DESC',
255
-	'formtype'    => 'textbox',
256
-	'valuetype'   => 'text',
257
-	'default'     => 'wggithub, settings, repositories, directories, requests, readmes',
252
+    'name'        => 'keywords',
253
+    'title'       => '_MI_WGGITHUB_KEYWORDS',
254
+    'description' => '_MI_WGGITHUB_KEYWORDS_DESC',
255
+    'formtype'    => 'textbox',
256
+    'valuetype'   => 'text',
257
+    'default'     => 'wggithub, settings, repositories, directories, requests, readmes',
258 258
 ];
259 259
 // Admin pager
260 260
 $modversion['config'][] = [
261
-	'name'        => 'adminpager',
262
-	'title'       => '_MI_WGGITHUB_ADMIN_PAGER',
263
-	'description' => '_MI_WGGITHUB_ADMIN_PAGER_DESC',
264
-	'formtype'    => 'textbox',
265
-	'valuetype'   => 'int',
266
-	'default'     => 25,
261
+    'name'        => 'adminpager',
262
+    'title'       => '_MI_WGGITHUB_ADMIN_PAGER',
263
+    'description' => '_MI_WGGITHUB_ADMIN_PAGER_DESC',
264
+    'formtype'    => 'textbox',
265
+    'valuetype'   => 'int',
266
+    'default'     => 25,
267 267
 ];
268 268
 // User pager
269 269
 $modversion['config'][] = [
270
-	'name'        => 'userpager',
271
-	'title'       => '_MI_WGGITHUB_USER_PAGER',
272
-	'description' => '_MI_WGGITHUB_USER_PAGER_DESC',
273
-	'formtype'    => 'textbox',
274
-	'valuetype'   => 'int',
275
-	'default'     => 25,
270
+    'name'        => 'userpager',
271
+    'title'       => '_MI_WGGITHUB_USER_PAGER',
272
+    'description' => '_MI_WGGITHUB_USER_PAGER_DESC',
273
+    'formtype'    => 'textbox',
274
+    'valuetype'   => 'int',
275
+    'default'     => 25,
276 276
 ];
277 277
 // Number column
278 278
 $modversion['config'][] = [
279
-	'name'        => 'numb_col',
280
-	'title'       => '_MI_WGGITHUB_NUMB_COL',
281
-	'description' => '_MI_WGGITHUB_NUMB_COL_DESC',
282
-	'formtype'    => 'select',
283
-	'valuetype'   => 'int',
284
-	'default'     => 1,
285
-	'options'     => [1 => '1', 2 => '2', 3 => '3', 4 => '4'],
279
+    'name'        => 'numb_col',
280
+    'title'       => '_MI_WGGITHUB_NUMB_COL',
281
+    'description' => '_MI_WGGITHUB_NUMB_COL_DESC',
282
+    'formtype'    => 'select',
283
+    'valuetype'   => 'int',
284
+    'default'     => 1,
285
+    'options'     => [1 => '1', 2 => '2', 3 => '3', 4 => '4'],
286 286
 ];
287 287
 // Divide by
288 288
 $modversion['config'][] = [
289
-	'name'        => 'divideby',
290
-	'title'       => '_MI_WGGITHUB_DIVIDEBY',
291
-	'description' => '_MI_WGGITHUB_DIVIDEBY_DESC',
292
-	'formtype'    => 'select',
293
-	'valuetype'   => 'int',
294
-	'default'     => 1,
295
-	'options'     => [1 => '1', 2 => '2', 3 => '3', 4 => '4'],
289
+    'name'        => 'divideby',
290
+    'title'       => '_MI_WGGITHUB_DIVIDEBY',
291
+    'description' => '_MI_WGGITHUB_DIVIDEBY_DESC',
292
+    'formtype'    => 'select',
293
+    'valuetype'   => 'int',
294
+    'default'     => 1,
295
+    'options'     => [1 => '1', 2 => '2', 3 => '3', 4 => '4'],
296 296
 ];
297 297
 // Table type
298 298
 $modversion['config'][] = [
299
-	'name'        => 'table_type',
300
-	'title'       => '_MI_WGGITHUB_TABLE_TYPE',
301
-	'description' => '_MI_WGGITHUB_DIVIDEBY_DESC',
302
-	'formtype'    => 'select',
303
-	'valuetype'   => 'int',
304
-	'default'     => 'bordered',
305
-	'options'     => ['bordered' => 'bordered', 'striped' => 'striped', 'hover' => 'hover', 'condensed' => 'condensed'],
299
+    'name'        => 'table_type',
300
+    'title'       => '_MI_WGGITHUB_TABLE_TYPE',
301
+    'description' => '_MI_WGGITHUB_DIVIDEBY_DESC',
302
+    'formtype'    => 'select',
303
+    'valuetype'   => 'int',
304
+    'default'     => 'bordered',
305
+    'options'     => ['bordered' => 'bordered', 'striped' => 'striped', 'hover' => 'hover', 'condensed' => 'condensed'],
306 306
 ];
307 307
 // Panel by
308 308
 $modversion['config'][] = [
309
-	'name'        => 'panel_type',
310
-	'title'       => '_MI_WGGITHUB_PANEL_TYPE',
311
-	'description' => '_MI_WGGITHUB_PANEL_TYPE_DESC',
312
-	'formtype'    => 'select',
313
-	'valuetype'   => 'text',
314
-	'default'     => 'default',
315
-	'options'     => ['default' => 'default', 'primary' => 'primary', 'success' => 'success', 'info' => 'info', 'warning' => 'warning', 'danger' => 'danger'],
309
+    'name'        => 'panel_type',
310
+    'title'       => '_MI_WGGITHUB_PANEL_TYPE',
311
+    'description' => '_MI_WGGITHUB_PANEL_TYPE_DESC',
312
+    'formtype'    => 'select',
313
+    'valuetype'   => 'text',
314
+    'default'     => 'default',
315
+    'options'     => ['default' => 'default', 'primary' => 'primary', 'success' => 'success', 'info' => 'info', 'warning' => 'warning', 'danger' => 'danger'],
316 316
 ];
317 317
 // Advertise
318 318
 $modversion['config'][] = [
319
-	'name'        => 'advertise',
320
-	'title'       => '_MI_WGGITHUB_ADVERTISE',
321
-	'description' => '_MI_WGGITHUB_ADVERTISE_DESC',
322
-	'formtype'    => 'textarea',
323
-	'valuetype'   => 'text',
324
-	'default'     => '',
319
+    'name'        => 'advertise',
320
+    'title'       => '_MI_WGGITHUB_ADVERTISE',
321
+    'description' => '_MI_WGGITHUB_ADVERTISE_DESC',
322
+    'formtype'    => 'textarea',
323
+    'valuetype'   => 'text',
324
+    'default'     => '',
325 325
 ];
326 326
 // Bookmarks
327 327
 $modversion['config'][] = [
328
-	'name'        => 'bookmarks',
329
-	'title'       => '_MI_WGGITHUB_BOOKMARKS',
330
-	'description' => '_MI_WGGITHUB_BOOKMARKS_DESC',
331
-	'formtype'    => 'yesno',
332
-	'valuetype'   => 'int',
333
-	'default'     => 0,
328
+    'name'        => 'bookmarks',
329
+    'title'       => '_MI_WGGITHUB_BOOKMARKS',
330
+    'description' => '_MI_WGGITHUB_BOOKMARKS_DESC',
331
+    'formtype'    => 'yesno',
332
+    'valuetype'   => 'int',
333
+    'default'     => 0,
334 334
 ];
335 335
 // Make Sample button visible?
336 336
 $modversion['config'][] = [
337
-	'name'        => 'displaySampleButton',
338
-	'title'       => 'CO_' . $moduleDirNameUpper . '_' . 'SHOW_SAMPLE_BUTTON',
339
-	'description' => 'CO_' . $moduleDirNameUpper . '_' . 'SHOW_SAMPLE_BUTTON_DESC',
340
-	'formtype'    => 'yesno',
341
-	'valuetype'   => 'int',
342
-	'default'     => 1,
337
+    'name'        => 'displaySampleButton',
338
+    'title'       => 'CO_' . $moduleDirNameUpper . '_' . 'SHOW_SAMPLE_BUTTON',
339
+    'description' => 'CO_' . $moduleDirNameUpper . '_' . 'SHOW_SAMPLE_BUTTON_DESC',
340
+    'formtype'    => 'yesno',
341
+    'valuetype'   => 'int',
342
+    'default'     => 1,
343 343
 ];
344 344
 // Maintained by
345 345
 $modversion['config'][] = [
346
-	'name'        => 'maintainedby',
347
-	'title'       => '_MI_WGGITHUB_MAINTAINEDBY',
348
-	'description' => '_MI_WGGITHUB_MAINTAINEDBY_DESC',
349
-	'formtype'    => 'textbox',
350
-	'valuetype'   => 'text',
351
-	'default'     => 'https://xoops.org/modules/newbb',
346
+    'name'        => 'maintainedby',
347
+    'title'       => '_MI_WGGITHUB_MAINTAINEDBY',
348
+    'description' => '_MI_WGGITHUB_MAINTAINEDBY_DESC',
349
+    'formtype'    => 'textbox',
350
+    'valuetype'   => 'text',
351
+    'default'     => 'https://xoops.org/modules/newbb',
352 352
 ];
Please login to merge, or discard this patch.
class/Github/Paginator.php 1 patch
Indentation   +142 added lines, -142 removed lines patch added patch discarded remove patch
@@ -12,147 +12,147 @@
 block discarded – undo
12 12
  */
13 13
 class Paginator extends Sanity implements \Iterator
14 14
 {
15
-	/** @var Api */
16
-	private $api;
17
-
18
-	/** @var Http\Request */
19
-	private $firstRequest;
20
-
21
-	/** @var Http\Request|NULL */
22
-	private $request;
23
-
24
-	/** @var Http\Response|NULL */
25
-	private $response;
26
-
27
-	/** @var int */
28
-	private $limit;
29
-
30
-	/** @var int */
31
-	private $counter = 0;
32
-
33
-
34
-	public function __construct(Api $api, Http\Request $request)
35
-	{
36
-		$this->api = $api;
37
-		$this->firstRequest = clone $request;
38
-	}
39
-
40
-
41
-	/**
42
-	 * Limits maximum steps of iteration.
43
-	 *
44
-	 * @param  int|NULL
45
-	 * @return self
46
-	 */
47
-	public function limit($limit)
48
-	{
49
-		$this->limit = $limit === NULL
50
-			? NULL
51
-			: (int) $limit;
52
-
53
-		return $this;
54
-	}
55
-
56
-
57
-	/**
58
-	 * @return void
59
-	 */
60
-	public function rewind()
61
-	{
62
-		$this->request = $this->firstRequest;
63
-		$this->response = NULL;
64
-		$this->counter = 0;
65
-	}
66
-
67
-
68
-	/**
69
-	 * @return bool
70
-	 */
71
-	public function valid()
72
-	{
73
-		return $this->request !== NULL && ($this->limit === NULL || $this->counter < $this->limit);
74
-	}
75
-
76
-
77
-	/**
78
-	 * @return Http\Response
79
-	 */
80
-	public function current()
81
-	{
82
-		$this->load();
83
-		return $this->response;
84
-	}
85
-
86
-
87
-	/**
88
-	 * @return int
89
-	 */
90
-	public function key()
91
-	{
92
-		return static::parsePage($this->request->getUrl());
93
-	}
94
-
95
-
96
-	/**
97
-	 * @return void
98
-	 */
99
-	public function next()
100
-	{
101
-		$this->load();
102
-
103
-		if ($url = static::parseLink($this->response->getHeader('Link'), 'next')) {
104
-			$this->request = new Http\Request(
105
-				$this->request->getMethod(),
106
-				$url,
107
-				$this->request->getHeaders(),
108
-				$this->request->getContent()
109
-			);
110
-		} else {
111
-			$this->request = NULL;
112
-		}
113
-
114
-		$this->response = NULL;
115
-		$this->counter++;
116
-	}
117
-
118
-
119
-	private function load()
120
-	{
121
-		if ($this->response === NULL) {
122
-			$this->response = $this->api->request($this->request);
123
-		}
124
-	}
125
-
126
-
127
-	/**
128
-	 * @param  string
129
-	 * @return int
130
-	 */
131
-	public static function parsePage($url)
132
-	{
133
-		list (, $parametersStr) = explode('?', $url, 2) + ['', ''];
134
-		parse_str($parametersStr, $parameters);
135
-
136
-		return isset($parameters['page'])
137
-			? max(1, (int) $parameters['page'])
138
-			: 1;
139
-	}
140
-
141
-
142
-	/**
143
-	 * @see  https://developer.github.com/guides/traversing-with-pagination/#navigating-through-the-pages
144
-	 *
145
-	 * @param  string
146
-	 * @param  string
147
-	 * @return string|NULL
148
-	 */
149
-	public static function parseLink($link, $rel)
150
-	{
151
-		if (!preg_match('(<([^>]+)>;\s*rel="' . preg_quote($rel) . '")', $link, $match)) {
152
-			return NULL;
153
-		}
154
-
155
-		return $match[1];
156
-	}
15
+    /** @var Api */
16
+    private $api;
17
+
18
+    /** @var Http\Request */
19
+    private $firstRequest;
20
+
21
+    /** @var Http\Request|NULL */
22
+    private $request;
23
+
24
+    /** @var Http\Response|NULL */
25
+    private $response;
26
+
27
+    /** @var int */
28
+    private $limit;
29
+
30
+    /** @var int */
31
+    private $counter = 0;
32
+
33
+
34
+    public function __construct(Api $api, Http\Request $request)
35
+    {
36
+        $this->api = $api;
37
+        $this->firstRequest = clone $request;
38
+    }
39
+
40
+
41
+    /**
42
+     * Limits maximum steps of iteration.
43
+     *
44
+     * @param  int|NULL
45
+     * @return self
46
+     */
47
+    public function limit($limit)
48
+    {
49
+        $this->limit = $limit === NULL
50
+            ? NULL
51
+            : (int) $limit;
52
+
53
+        return $this;
54
+    }
55
+
56
+
57
+    /**
58
+     * @return void
59
+     */
60
+    public function rewind()
61
+    {
62
+        $this->request = $this->firstRequest;
63
+        $this->response = NULL;
64
+        $this->counter = 0;
65
+    }
66
+
67
+
68
+    /**
69
+     * @return bool
70
+     */
71
+    public function valid()
72
+    {
73
+        return $this->request !== NULL && ($this->limit === NULL || $this->counter < $this->limit);
74
+    }
75
+
76
+
77
+    /**
78
+     * @return Http\Response
79
+     */
80
+    public function current()
81
+    {
82
+        $this->load();
83
+        return $this->response;
84
+    }
85
+
86
+
87
+    /**
88
+     * @return int
89
+     */
90
+    public function key()
91
+    {
92
+        return static::parsePage($this->request->getUrl());
93
+    }
94
+
95
+
96
+    /**
97
+     * @return void
98
+     */
99
+    public function next()
100
+    {
101
+        $this->load();
102
+
103
+        if ($url = static::parseLink($this->response->getHeader('Link'), 'next')) {
104
+            $this->request = new Http\Request(
105
+                $this->request->getMethod(),
106
+                $url,
107
+                $this->request->getHeaders(),
108
+                $this->request->getContent()
109
+            );
110
+        } else {
111
+            $this->request = NULL;
112
+        }
113
+
114
+        $this->response = NULL;
115
+        $this->counter++;
116
+    }
117
+
118
+
119
+    private function load()
120
+    {
121
+        if ($this->response === NULL) {
122
+            $this->response = $this->api->request($this->request);
123
+        }
124
+    }
125
+
126
+
127
+    /**
128
+     * @param  string
129
+     * @return int
130
+     */
131
+    public static function parsePage($url)
132
+    {
133
+        list (, $parametersStr) = explode('?', $url, 2) + ['', ''];
134
+        parse_str($parametersStr, $parameters);
135
+
136
+        return isset($parameters['page'])
137
+            ? max(1, (int) $parameters['page'])
138
+            : 1;
139
+    }
140
+
141
+
142
+    /**
143
+     * @see  https://developer.github.com/guides/traversing-with-pagination/#navigating-through-the-pages
144
+     *
145
+     * @param  string
146
+     * @param  string
147
+     * @return string|NULL
148
+     */
149
+    public static function parseLink($link, $rel)
150
+    {
151
+        if (!preg_match('(<([^>]+)>;\s*rel="' . preg_quote($rel) . '")', $link, $match)) {
152
+            return NULL;
153
+        }
154
+
155
+        return $match[1];
156
+    }
157 157
 
158 158
 }
Please login to merge, or discard this patch.
class/Github/Sanity.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -8,21 +8,21 @@
 block discarded – undo
8 8
  */
9 9
 abstract class Sanity
10 10
 {
11
-	/**
12
-	 * @throws LogicException
13
-	 */
14
-	public function & __get($name)
15
-	{
16
-		throw new LogicException('Cannot read an undeclared property ' . get_class($this) . "::\$$name.");
17
-	}
11
+    /**
12
+     * @throws LogicException
13
+     */
14
+    public function & __get($name)
15
+    {
16
+        throw new LogicException('Cannot read an undeclared property ' . get_class($this) . "::\$$name.");
17
+    }
18 18
 
19 19
 
20
-	/**
21
-	 * @throws LogicException
22
-	 */
23
-	public function __set($name, $value)
24
-	{
25
-		throw new LogicException('Cannot write to an undeclared property ' . get_class($this) . "::\$$name.");
26
-	}
20
+    /**
21
+     * @throws LogicException
22
+     */
23
+    public function __set($name, $value)
24
+    {
25
+        throw new LogicException('Cannot write to an undeclared property ' . get_class($this) . "::\$$name.");
26
+    }
27 27
 
28 28
 }
Please login to merge, or discard this patch.
class/Github/Api.php 1 patch
Indentation   +590 added lines, -590 removed lines patch added patch discarded remove patch
@@ -12,595 +12,595 @@
 block discarded – undo
12 12
  */
13 13
 class Api extends Sanity
14 14
 {
15
-	/** @var string */
16
-	private $url = 'https://api.github.com';
17
-
18
-	/** @var string */
19
-	private $defaultAccept = 'application/vnd.github.v3+json';
20
-
21
-	/** @var array|NULL */
22
-	private $defaultParameters = [];
23
-
24
-	/** @var Http\IClient */
25
-	private $client;
26
-
27
-	/** @var OAuth\Token|NULL */
28
-	private $token;
29
-
30
-
31
-	public function __construct(Http\IClient $client = NULL)
32
-	{
33
-		$this->client = $client ?: Helpers::createDefaultClient();
34
-	}
35
-
36
-
37
-	/**
38
-	 * @return self
39
-	 */
40
-	public function setToken(OAuth\Token $token = NULL)
41
-	{
42
-		$this->token = $token;
43
-		return $this;
44
-	}
45
-
46
-
47
-	/**
48
-	 * @return OAuth\Token|NULL
49
-	 */
50
-	public function getToken()
51
-	{
52
-		return $this->token;
53
-	}
54
-
55
-
56
-	/**
57
-	 * @param  array
58
-	 * @return self
59
-	 */
60
-	public function setDefaultParameters(array $defaults = NULL)
61
-	{
62
-		$this->defaultParameters = $defaults ?: [];
63
-		return $this;
64
-	}
65
-
66
-
67
-	/**
68
-	 * @return array
69
-	 */
70
-	public function getDefaultParameters()
71
-	{
72
-		return $this->defaultParameters;
73
-	}
74
-
75
-
76
-	/**
77
-	 * @param  string
78
-	 * @return self
79
-	 */
80
-	public function setDefaultAccept($accept)
81
-	{
82
-		$this->defaultAccept = $accept;
83
-		return $this;
84
-	}
85
-
86
-
87
-	/**
88
-	 * @return string
89
-	 */
90
-	public function getDefaultAccept()
91
-	{
92
-		return $this->defaultAccept;
93
-	}
94
-
95
-
96
-	/**
97
-	 * @see createRequest()
98
-	 * @see request()
99
-	 *
100
-	 * @param  string
101
-	 * @return Http\Response
102
-	 *
103
-	 * @throws MissingParameterException
104
-	 */
105
-	public function delete($urlPath, array $parameters = [], array $headers = [])
106
-	{
107
-		return $this->request(
108
-			$this->createRequest(Http\Request::DELETE, $urlPath, $parameters, $headers)
109
-		);
110
-	}
111
-
112
-
113
-	/**
114
-	 * @see createRequest()
115
-	 * @see request()
116
-	 *
117
-	 * @param  string
118
-	 * @return Http\Response
119
-	 *
120
-	 * @throws MissingParameterException
121
-	 */
122
-	public function get($urlPath, array $parameters = [], array $headers = [])
123
-	{
124
-		return $this->request(
125
-			$this->createRequest(Http\Request::GET, $urlPath, $parameters, $headers)
126
-		);
127
-	}
128
-
129
-
130
-	/**
131
-	 * @see createRequest()
132
-	 * @see request()
133
-	 *
134
-	 * @param  string
135
-	 * @return Http\Response
136
-	 *
137
-	 * @throws MissingParameterException
138
-	 */
139
-	public function head($urlPath, array $parameters = [], array $headers = [])
140
-	{
141
-		return $this->request(
142
-			$this->createRequest(Http\Request::HEAD, $urlPath, $parameters, $headers)
143
-		);
144
-	}
145
-
146
-
147
-	/**
148
-	 * @see createRequest()
149
-	 * @see request()
150
-	 *
151
-	 * @param  string
152
-	 * @param  mixed
153
-	 * @return Http\Response
154
-	 *
155
-	 * @throws MissingParameterException
156
-	 * @throws JsonException
157
-	 */
158
-	public function patch($urlPath, $content, array $parameters = [], array $headers = [])
159
-	{
160
-		return $this->request(
161
-			$this->createRequest(Http\Request::PATCH, $urlPath, $parameters, $headers, $content)
162
-		);
163
-	}
164
-
165
-
166
-	/**
167
-	 * @see createRequest()
168
-	 * @see request()
169
-	 *
170
-	 * @param  string
171
-	 * @param  mixed
172
-	 * @return Http\Response
173
-	 *
174
-	 * @throws MissingParameterException
175
-	 * @throws JsonException
176
-	 */
177
-	public function post($urlPath, $content, array $parameters = [], array $headers = [])
178
-	{
179
-		return $this->request(
180
-			$this->createRequest(Http\Request::POST, $urlPath, $parameters, $headers, $content)
181
-		);
182
-	}
183
-
184
-
185
-	/**
186
-	 * @see createRequest()
187
-	 * @see request()
188
-	 *
189
-	 * @param  string
190
-	 * @param  mixed
191
-	 * @return Http\Response
192
-	 *
193
-	 * @throws MissingParameterException
194
-	 * @throws JsonException
195
-	 */
196
-	public function put($urlPath, $content = NULL, array $parameters = [], array $headers = [])
197
-	{
198
-		return $this->request(
199
-			$this->createRequest(Http\Request::PUT, $urlPath, $parameters, $headers, $content)
200
-		);
201
-	}
202
-
203
-
204
-	/**
205
-	 * @return Http\Response
206
-	 *
207
-	 * @throws Http\BadResponseException
208
-	 */
209
-	public function request(Http\Request $request)
210
-	{
211
-		$request = clone $request;
212
-
213
-		$request->addHeader('Accept', $this->defaultAccept);
214
-		$request->addHeader('Time-Zone', date_default_timezone_get());
215
-		$request->addHeader('User-Agent', 'milo/github-api');
216
-
217
-		if ($this->token) {
218
-			/** @todo Distinguish token type? */
219
-			$request->addHeader('Authorization', "token {$this->token->getValue()}");
220
-		}
221
-
222
-		return $this->client->request($request);
223
-	}
224
-
225
-
226
-	/**
227
-	 * @param  string  Http\Request::GET|POST|...
228
-	 * @param  string  path like '/users/:user/repos' where ':user' is substitution
229
-	 * @param  array[name => value]  replaces substitutions in $urlPath, the rest is appended as query string to URL
230
-	 * @param  array[name => value]  name is case-insensitive
231
-	 * @param  mixed|NULL  arrays and objects are encoded to JSON and Content-Type is set
232
-	 * @return Http\Request
233
-	 *
234
-	 * @throws MissingParameterException  when substitution is used in URL but parameter is missing
235
-	 * @throws JsonException  when encoding to JSON fails
236
-	 */
237
-	public function createRequest($method, $urlPath, array $parameters = [], array $headers = [], $content = NULL)
238
-	{
239
-		if (stripos($urlPath, $this->url) === 0) {  # Allows non-HTTPS URLs
240
-			$baseUrl = $this->url;
241
-			$urlPath = substr($urlPath, strlen($this->url));
242
-
243
-		} elseif (preg_match('#^(https://[^/]+)(/.*)?$#', $urlPath, $m)) {
244
-			$baseUrl = $m[1];
245
-			$urlPath = isset($m[2]) ? $m[2] : '';
246
-
247
-		} else {
248
-			$baseUrl = $this->url;
249
-		}
250
-
251
-		if (strpos($urlPath, '{') === FALSE) {
252
-			$urlPath = $this->expandColonParameters($urlPath, $parameters, $this->defaultParameters);
253
-		} else {
254
-			$urlPath = $this->expandUriTemplate($urlPath, $parameters, $this->defaultParameters);
255
-		}
256
-
257
-		$url = rtrim($baseUrl, '/') . '/' . ltrim($urlPath, '/');
258
-
259
-		if ($content !== NULL && (is_array($content) || is_object($content))) {
260
-			$headers['Content-Type'] = 'application/json; charset=utf-8';
261
-			$content = Helpers::jsonEncode($content);
262
-		}
263
-
264
-		return new Http\Request($method, $url, $headers, $content);
265
-	}
266
-
267
-
268
-	/**
269
-	 * @param  Http\Response
270
-	 * @param  array|NULL  these codes are treated as success; code < 300 if NULL
271
-	 * @return mixed
272
-	 *
273
-	 * @throws ApiException
274
-	 */
275
-	public function decode(Http\Response $response, array $okCodes = NULL)
276
-	{
277
-		$content = $response->getContent();
278
-		if (preg_match('~application/json~i', $response->getHeader('Content-Type', ''))) {
279
-			try {
280
-				$content = Helpers::jsonDecode($response->getContent(), true);
281
-			} catch (JsonException $e) {
282
-				throw new InvalidResponseException('JSON decoding failed.', 0, $e, $response);
283
-			}
284
-
285
-			if (!is_array($content) && !is_object($content)) {
286
-				throw new InvalidResponseException('Decoded JSON is not an array or object.', 0, NULL, $response);
287
-			}
288
-		}
289
-
290
-		$code = $response->getCode();
291
-		if (($okCodes === NULL && $code >= 300) || (is_array($okCodes) && !in_array($code, $okCodes))) {
292
-			/** @var $content \stdClass */
293
-			switch ($code) {
294
-				case Http\Response::S400_BAD_REQUEST:
295
-					throw new BadRequestException(self::errorMessage($content), $code, NULL, $response);
296
-
297
-				case Http\Response::S401_UNAUTHORIZED:
298
-					throw new UnauthorizedException(self::errorMessage($content), $code, NULL, $response);
299
-
300
-				case Http\Response::S403_FORBIDDEN:
301
-					if ($response->getHeader('X-RateLimit-Remaining') === '0') {
302
-						throw new RateLimitExceedException(self::errorMessage($content), $code, NULL, $response);
303
-					}
304
-					throw new ForbiddenException(self::errorMessage($content), $code, NULL, $response);
305
-
306
-				case Http\Response::S404_NOT_FOUND:
307
-					throw new NotFoundException('Resource not found or not authorized to access.', $code, NULL, $response);
308
-
309
-				case Http\Response::S422_UNPROCESSABLE_ENTITY:
310
-					throw new UnprocessableEntityException(self::errorMessage($content), $code, NULL, $response);
311
-			}
312
-
313
-			$message = $okCodes === NULL ? '< 300' : implode(' or ', $okCodes);
314
-			throw new UnexpectedResponseException("Expected response with code $message.", $code, NULL, $response);
315
-		}
316
-
317
-		return $content;
318
-	}
319
-
320
-
321
-	/**
322
-	 * Creates paginator for HTTP GET requests.
323
-	 *
324
-	 * @see get()
325
-	 *
326
-	 * @param  string
327
-	 * @return Paginator
328
-	 *
329
-	 * @throws MissingParameterException
330
-	 */
331
-	public function paginator($urlPath, array $parameters = [], array $headers = [])
332
-	{
333
-		return new Paginator(
334
-			$this,
335
-			$this->createRequest(Http\Request::GET, $urlPath, $parameters, $headers)
336
-		);
337
-	}
338
-
339
-
340
-	/**
341
-	 * @return Http\IClient
342
-	 */
343
-	public function getClient()
344
-	{
345
-		return $this->client;
346
-	}
347
-
348
-
349
-	/**
350
-	 * @param  string
351
-	 * @return Api
352
-	 */
353
-	public function withUrl($url)
354
-	{
355
-		$api = clone $this;
356
-		$api->setUrl($url);
357
-		return $api;
358
-	}
359
-
360
-
361
-	/**
362
-	 * @param  string
363
-	 * @return self
364
-	 */
365
-	public function setUrl($url)
366
-	{
367
-		$this->url = $url;
368
-		return $this;
369
-	}
370
-
371
-
372
-	/**
373
-	 * @return string
374
-	 */
375
-	public function getUrl()
376
-	{
377
-		return $this->url;
378
-	}
379
-
380
-
381
-	/**
382
-	 * @param  string
383
-	 * @return string
384
-	 *
385
-	 * @throws MissingParameterException
386
-	 */
387
-	protected function expandColonParameters($url, array $parameters, array $defaultParameters)
388
-	{
389
-		$parameters += $defaultParameters;
390
-
391
-		$url = preg_replace_callback('#(^|/|\.):([^/.]+)#', function($m) use ($url, & $parameters) {
392
-			if (!isset($parameters[$m[2]])) {
393
-				throw new MissingParameterException("Missing parameter '$m[2]' for URL path '$url'.");
394
-			}
395
-			$parameter = $parameters[$m[2]];
396
-			unset($parameters[$m[2]]);
397
-			return $m[1] . rawurlencode($parameter);
398
-		}, $url);
399
-
400
-		$url = rtrim($url, '/');
401
-
402
-		if (count($parameters)) {
403
-			$url .= '?' . http_build_query($parameters);
404
-		}
405
-
406
-		return $url;
407
-	}
408
-
409
-
410
-	/**
411
-	 * Expands URI template (RFC 6570).
412
-	 *
413
-	 * @see http://tools.ietf.org/html/rfc6570
414
-	 * @todo Inject remaining default parameters into query string?
415
-	 *
416
-	 * @param  string
417
-	 * @return string
418
-	 */
419
-	protected function expandUriTemplate($url, array $parameters, array $defaultParameters)
420
-	{
421
-		$parameters += $defaultParameters;
422
-
423
-		static $operatorFlags = [
424
-			''  => ['prefix' => '',  'separator' => ',', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => FALSE],
425
-			'+' => ['prefix' => '',  'separator' => ',', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => TRUE],
426
-			'#' => ['prefix' => '#', 'separator' => ',', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => TRUE],
427
-			'.' => ['prefix' => '.', 'separator' => '.', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => FALSE],
428
-			'/' => ['prefix' => '/', 'separator' => '/', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => FALSE],
429
-			';' => ['prefix' => ';', 'separator' => ';', 'named' => TRUE,  'ifEmpty' => '',  'reserved' => FALSE],
430
-			'?' => ['prefix' => '?', 'separator' => '&', 'named' => TRUE,  'ifEmpty' => '=', 'reserved' => FALSE],
431
-			'&' => ['prefix' => '&', 'separator' => '&', 'named' => TRUE,  'ifEmpty' => '=', 'reserved' => FALSE],
432
-		];
433
-
434
-		return preg_replace_callback('~{([+#./;?&])?([^}]+?)}~', function($m) use ($url, & $parameters, $operatorFlags) {
435
-			$flags = $operatorFlags[$m[1]];
436
-
437
-			$translated = [];
438
-			foreach (explode(',', $m[2]) as $name) {
439
-				$explode = FALSE;
440
-				$maxLength = NULL;
441
-				if (preg_match('~^(.+)(?:(\*)|:(\d+))$~', $name, $tmp)) { // TODO: Speed up?
442
-					$name = $tmp[1];
443
-					if (isset($tmp[3])) {
444
-						$maxLength = (int) $tmp[3];
445
-					} else {
446
-						$explode = TRUE;
447
-					}
448
-				}
449
-
450
-				if (!isset($parameters[$name])) {  // TODO: Throw exception?
451
-					continue;
452
-				}
453
-
454
-				$value = $parameters[$name];
455
-				if (is_scalar($value)) {
456
-					$translated[] = $this->prefix($flags, $name, $this->escape($flags, $value, $maxLength));
457
-
458
-				} else {
459
-					$value = (array) $value;
460
-					$isAssoc = key($value) !== 0;
461
-
462
-					// The '*' (explode) modifier
463
-					if ($explode) {
464
-						$parts = [];
465
-						if ($isAssoc) {
466
-							$this->walk($value, function ($v, $k) use (& $parts, $flags, $maxLength) {
467
-								$parts[] = $this->prefix(['named' => TRUE] + $flags, $k, $this->escape($flags, $v, $maxLength));
468
-							});
469
-
470
-						} elseif ($flags['named']) {
471
-							$this->walk($value, function ($v) use (& $parts, $flags, $name, $maxLength) {
472
-								$parts[] = $this->prefix($flags, $name, $this->escape($flags, $v, $maxLength));
473
-							});
474
-
475
-						} else {
476
-							$this->walk($value, function ($v) use (& $parts, $flags, $maxLength) {
477
-								$parts[] = $this->escape($flags, $v, $maxLength);
478
-							});
479
-						}
480
-
481
-						if (isset($parts[0])) {
482
-							if ($flags['named']) {
483
-								$translated[] = implode($flags['separator'], $parts);
484
-							} else {
485
-								$translated[] = $this->prefix($flags, $name, implode($flags['separator'], $parts));
486
-							}
487
-						}
488
-
489
-					} else {
490
-						$parts = [];
491
-						$this->walk($value, function($v, $k) use (& $parts, $isAssoc, $flags, $maxLength) {
492
-							if ($isAssoc) {
493
-								$parts[] = $this->escape($flags, $k);
494
-							}
495
-
496
-							$parts[] = $this->escape($flags, $v, $maxLength);
497
-						});
498
-
499
-						if (isset($parts[0])) {
500
-							$translated[] = $this->prefix($flags, $name, implode(',', $parts));
501
-						}
502
-					}
503
-				}
504
-			}
505
-
506
-			if (isset($translated[0])) {
507
-				return $flags['prefix'] . implode($flags['separator'], $translated);
508
-			}
509
-
510
-			return '';
511
-		}, $url);
512
-	}
513
-
514
-
515
-	/**
516
-	 * @param  array
517
-	 * @param  string
518
-	 * @param  string  already escaped
519
-	 * @return string
520
-	 */
521
-	private function prefix(array $flags, $name, $value)
522
-	{
523
-		$prefix = '';
524
-		if ($flags['named']) {
525
-			$prefix .= $this->escape($flags, $name);
526
-			if (isset($value[0])) {
527
-				$prefix .= '=';
528
-			} else {
529
-				$prefix .= $flags['ifEmpty'];
530
-			}
531
-		}
532
-
533
-		return $prefix . $value;
534
-	}
535
-
536
-
537
-	/**
538
-	 * @param  array
539
-	 * @param  mixed
540
-	 * @param  int|NULL
541
-	 * @return string
542
-	 */
543
-	private function escape(array $flags, $value, $maxLength = NULL)
544
-	{
545
-		$value = (string) $value;
546
-
547
-		if ($maxLength !== NULL) {
548
-			if (preg_match('~^(.{' . $maxLength . '}).~u', $value, $m)) {
549
-				$value = $m[1];
550
-			} elseif (strlen($value) > $maxLength) {  # when malformed UTF-8
551
-				$value = substr($value, 0, $maxLength);
552
-			}
553
-		}
554
-
555
-		if ($flags['reserved']) {
556
-			$parts = preg_split('~(%[0-9a-fA-F]{2}|[:/?#[\]@!$&\'()*+,;=])~', $value, -1, PREG_SPLIT_DELIM_CAPTURE);
557
-			$parts[] = '';
558
-
559
-			$escaped = '';
560
-			for ($i = 0, $count = count($parts); $i < $count; $i += 2) {
561
-				$escaped .= rawurlencode($parts[$i]) . $parts[$i + 1];
562
-			}
563
-
564
-			return $escaped;
565
-		}
566
-
567
-		return rawurlencode($value);
568
-	}
569
-
570
-
571
-	/**
572
-	 * @param  array
573
-	 * @param  callable
574
-	 */
575
-	private function walk(array $array, $cb)
576
-	{
577
-		foreach ($array as $k => $v) {
578
-			if ($v === NULL) {
579
-				continue;
580
-			}
581
-
582
-			$cb($v, $k);
583
-		}
584
-	}
585
-
586
-
587
-	/**
588
-	 * @param  \stdClass
589
-	 * @return string
590
-	 */
591
-	private static function errorMessage($content)
592
-	{
593
-		$message = isset($content->message)
594
-			? $content->message
595
-			: 'Unknown error';
596
-
597
-		if (isset($content->errors)) {
598
-			$message .= implode(', ', array_map(function($error) {
599
-				return '[' . implode(':', (array) $error) . ']';
600
-			}, $content->errors));
601
-		}
602
-
603
-		return $message;
604
-	}
15
+    /** @var string */
16
+    private $url = 'https://api.github.com';
17
+
18
+    /** @var string */
19
+    private $defaultAccept = 'application/vnd.github.v3+json';
20
+
21
+    /** @var array|NULL */
22
+    private $defaultParameters = [];
23
+
24
+    /** @var Http\IClient */
25
+    private $client;
26
+
27
+    /** @var OAuth\Token|NULL */
28
+    private $token;
29
+
30
+
31
+    public function __construct(Http\IClient $client = NULL)
32
+    {
33
+        $this->client = $client ?: Helpers::createDefaultClient();
34
+    }
35
+
36
+
37
+    /**
38
+     * @return self
39
+     */
40
+    public function setToken(OAuth\Token $token = NULL)
41
+    {
42
+        $this->token = $token;
43
+        return $this;
44
+    }
45
+
46
+
47
+    /**
48
+     * @return OAuth\Token|NULL
49
+     */
50
+    public function getToken()
51
+    {
52
+        return $this->token;
53
+    }
54
+
55
+
56
+    /**
57
+     * @param  array
58
+     * @return self
59
+     */
60
+    public function setDefaultParameters(array $defaults = NULL)
61
+    {
62
+        $this->defaultParameters = $defaults ?: [];
63
+        return $this;
64
+    }
65
+
66
+
67
+    /**
68
+     * @return array
69
+     */
70
+    public function getDefaultParameters()
71
+    {
72
+        return $this->defaultParameters;
73
+    }
74
+
75
+
76
+    /**
77
+     * @param  string
78
+     * @return self
79
+     */
80
+    public function setDefaultAccept($accept)
81
+    {
82
+        $this->defaultAccept = $accept;
83
+        return $this;
84
+    }
85
+
86
+
87
+    /**
88
+     * @return string
89
+     */
90
+    public function getDefaultAccept()
91
+    {
92
+        return $this->defaultAccept;
93
+    }
94
+
95
+
96
+    /**
97
+     * @see createRequest()
98
+     * @see request()
99
+     *
100
+     * @param  string
101
+     * @return Http\Response
102
+     *
103
+     * @throws MissingParameterException
104
+     */
105
+    public function delete($urlPath, array $parameters = [], array $headers = [])
106
+    {
107
+        return $this->request(
108
+            $this->createRequest(Http\Request::DELETE, $urlPath, $parameters, $headers)
109
+        );
110
+    }
111
+
112
+
113
+    /**
114
+     * @see createRequest()
115
+     * @see request()
116
+     *
117
+     * @param  string
118
+     * @return Http\Response
119
+     *
120
+     * @throws MissingParameterException
121
+     */
122
+    public function get($urlPath, array $parameters = [], array $headers = [])
123
+    {
124
+        return $this->request(
125
+            $this->createRequest(Http\Request::GET, $urlPath, $parameters, $headers)
126
+        );
127
+    }
128
+
129
+
130
+    /**
131
+     * @see createRequest()
132
+     * @see request()
133
+     *
134
+     * @param  string
135
+     * @return Http\Response
136
+     *
137
+     * @throws MissingParameterException
138
+     */
139
+    public function head($urlPath, array $parameters = [], array $headers = [])
140
+    {
141
+        return $this->request(
142
+            $this->createRequest(Http\Request::HEAD, $urlPath, $parameters, $headers)
143
+        );
144
+    }
145
+
146
+
147
+    /**
148
+     * @see createRequest()
149
+     * @see request()
150
+     *
151
+     * @param  string
152
+     * @param  mixed
153
+     * @return Http\Response
154
+     *
155
+     * @throws MissingParameterException
156
+     * @throws JsonException
157
+     */
158
+    public function patch($urlPath, $content, array $parameters = [], array $headers = [])
159
+    {
160
+        return $this->request(
161
+            $this->createRequest(Http\Request::PATCH, $urlPath, $parameters, $headers, $content)
162
+        );
163
+    }
164
+
165
+
166
+    /**
167
+     * @see createRequest()
168
+     * @see request()
169
+     *
170
+     * @param  string
171
+     * @param  mixed
172
+     * @return Http\Response
173
+     *
174
+     * @throws MissingParameterException
175
+     * @throws JsonException
176
+     */
177
+    public function post($urlPath, $content, array $parameters = [], array $headers = [])
178
+    {
179
+        return $this->request(
180
+            $this->createRequest(Http\Request::POST, $urlPath, $parameters, $headers, $content)
181
+        );
182
+    }
183
+
184
+
185
+    /**
186
+     * @see createRequest()
187
+     * @see request()
188
+     *
189
+     * @param  string
190
+     * @param  mixed
191
+     * @return Http\Response
192
+     *
193
+     * @throws MissingParameterException
194
+     * @throws JsonException
195
+     */
196
+    public function put($urlPath, $content = NULL, array $parameters = [], array $headers = [])
197
+    {
198
+        return $this->request(
199
+            $this->createRequest(Http\Request::PUT, $urlPath, $parameters, $headers, $content)
200
+        );
201
+    }
202
+
203
+
204
+    /**
205
+     * @return Http\Response
206
+     *
207
+     * @throws Http\BadResponseException
208
+     */
209
+    public function request(Http\Request $request)
210
+    {
211
+        $request = clone $request;
212
+
213
+        $request->addHeader('Accept', $this->defaultAccept);
214
+        $request->addHeader('Time-Zone', date_default_timezone_get());
215
+        $request->addHeader('User-Agent', 'milo/github-api');
216
+
217
+        if ($this->token) {
218
+            /** @todo Distinguish token type? */
219
+            $request->addHeader('Authorization', "token {$this->token->getValue()}");
220
+        }
221
+
222
+        return $this->client->request($request);
223
+    }
224
+
225
+
226
+    /**
227
+     * @param  string  Http\Request::GET|POST|...
228
+     * @param  string  path like '/users/:user/repos' where ':user' is substitution
229
+     * @param  array[name => value]  replaces substitutions in $urlPath, the rest is appended as query string to URL
230
+     * @param  array[name => value]  name is case-insensitive
231
+     * @param  mixed|NULL  arrays and objects are encoded to JSON and Content-Type is set
232
+     * @return Http\Request
233
+     *
234
+     * @throws MissingParameterException  when substitution is used in URL but parameter is missing
235
+     * @throws JsonException  when encoding to JSON fails
236
+     */
237
+    public function createRequest($method, $urlPath, array $parameters = [], array $headers = [], $content = NULL)
238
+    {
239
+        if (stripos($urlPath, $this->url) === 0) {  # Allows non-HTTPS URLs
240
+            $baseUrl = $this->url;
241
+            $urlPath = substr($urlPath, strlen($this->url));
242
+
243
+        } elseif (preg_match('#^(https://[^/]+)(/.*)?$#', $urlPath, $m)) {
244
+            $baseUrl = $m[1];
245
+            $urlPath = isset($m[2]) ? $m[2] : '';
246
+
247
+        } else {
248
+            $baseUrl = $this->url;
249
+        }
250
+
251
+        if (strpos($urlPath, '{') === FALSE) {
252
+            $urlPath = $this->expandColonParameters($urlPath, $parameters, $this->defaultParameters);
253
+        } else {
254
+            $urlPath = $this->expandUriTemplate($urlPath, $parameters, $this->defaultParameters);
255
+        }
256
+
257
+        $url = rtrim($baseUrl, '/') . '/' . ltrim($urlPath, '/');
258
+
259
+        if ($content !== NULL && (is_array($content) || is_object($content))) {
260
+            $headers['Content-Type'] = 'application/json; charset=utf-8';
261
+            $content = Helpers::jsonEncode($content);
262
+        }
263
+
264
+        return new Http\Request($method, $url, $headers, $content);
265
+    }
266
+
267
+
268
+    /**
269
+     * @param  Http\Response
270
+     * @param  array|NULL  these codes are treated as success; code < 300 if NULL
271
+     * @return mixed
272
+     *
273
+     * @throws ApiException
274
+     */
275
+    public function decode(Http\Response $response, array $okCodes = NULL)
276
+    {
277
+        $content = $response->getContent();
278
+        if (preg_match('~application/json~i', $response->getHeader('Content-Type', ''))) {
279
+            try {
280
+                $content = Helpers::jsonDecode($response->getContent(), true);
281
+            } catch (JsonException $e) {
282
+                throw new InvalidResponseException('JSON decoding failed.', 0, $e, $response);
283
+            }
284
+
285
+            if (!is_array($content) && !is_object($content)) {
286
+                throw new InvalidResponseException('Decoded JSON is not an array or object.', 0, NULL, $response);
287
+            }
288
+        }
289
+
290
+        $code = $response->getCode();
291
+        if (($okCodes === NULL && $code >= 300) || (is_array($okCodes) && !in_array($code, $okCodes))) {
292
+            /** @var $content \stdClass */
293
+            switch ($code) {
294
+                case Http\Response::S400_BAD_REQUEST:
295
+                    throw new BadRequestException(self::errorMessage($content), $code, NULL, $response);
296
+
297
+                case Http\Response::S401_UNAUTHORIZED:
298
+                    throw new UnauthorizedException(self::errorMessage($content), $code, NULL, $response);
299
+
300
+                case Http\Response::S403_FORBIDDEN:
301
+                    if ($response->getHeader('X-RateLimit-Remaining') === '0') {
302
+                        throw new RateLimitExceedException(self::errorMessage($content), $code, NULL, $response);
303
+                    }
304
+                    throw new ForbiddenException(self::errorMessage($content), $code, NULL, $response);
305
+
306
+                case Http\Response::S404_NOT_FOUND:
307
+                    throw new NotFoundException('Resource not found or not authorized to access.', $code, NULL, $response);
308
+
309
+                case Http\Response::S422_UNPROCESSABLE_ENTITY:
310
+                    throw new UnprocessableEntityException(self::errorMessage($content), $code, NULL, $response);
311
+            }
312
+
313
+            $message = $okCodes === NULL ? '< 300' : implode(' or ', $okCodes);
314
+            throw new UnexpectedResponseException("Expected response with code $message.", $code, NULL, $response);
315
+        }
316
+
317
+        return $content;
318
+    }
319
+
320
+
321
+    /**
322
+     * Creates paginator for HTTP GET requests.
323
+     *
324
+     * @see get()
325
+     *
326
+     * @param  string
327
+     * @return Paginator
328
+     *
329
+     * @throws MissingParameterException
330
+     */
331
+    public function paginator($urlPath, array $parameters = [], array $headers = [])
332
+    {
333
+        return new Paginator(
334
+            $this,
335
+            $this->createRequest(Http\Request::GET, $urlPath, $parameters, $headers)
336
+        );
337
+    }
338
+
339
+
340
+    /**
341
+     * @return Http\IClient
342
+     */
343
+    public function getClient()
344
+    {
345
+        return $this->client;
346
+    }
347
+
348
+
349
+    /**
350
+     * @param  string
351
+     * @return Api
352
+     */
353
+    public function withUrl($url)
354
+    {
355
+        $api = clone $this;
356
+        $api->setUrl($url);
357
+        return $api;
358
+    }
359
+
360
+
361
+    /**
362
+     * @param  string
363
+     * @return self
364
+     */
365
+    public function setUrl($url)
366
+    {
367
+        $this->url = $url;
368
+        return $this;
369
+    }
370
+
371
+
372
+    /**
373
+     * @return string
374
+     */
375
+    public function getUrl()
376
+    {
377
+        return $this->url;
378
+    }
379
+
380
+
381
+    /**
382
+     * @param  string
383
+     * @return string
384
+     *
385
+     * @throws MissingParameterException
386
+     */
387
+    protected function expandColonParameters($url, array $parameters, array $defaultParameters)
388
+    {
389
+        $parameters += $defaultParameters;
390
+
391
+        $url = preg_replace_callback('#(^|/|\.):([^/.]+)#', function($m) use ($url, & $parameters) {
392
+            if (!isset($parameters[$m[2]])) {
393
+                throw new MissingParameterException("Missing parameter '$m[2]' for URL path '$url'.");
394
+            }
395
+            $parameter = $parameters[$m[2]];
396
+            unset($parameters[$m[2]]);
397
+            return $m[1] . rawurlencode($parameter);
398
+        }, $url);
399
+
400
+        $url = rtrim($url, '/');
401
+
402
+        if (count($parameters)) {
403
+            $url .= '?' . http_build_query($parameters);
404
+        }
405
+
406
+        return $url;
407
+    }
408
+
409
+
410
+    /**
411
+     * Expands URI template (RFC 6570).
412
+     *
413
+     * @see http://tools.ietf.org/html/rfc6570
414
+     * @todo Inject remaining default parameters into query string?
415
+     *
416
+     * @param  string
417
+     * @return string
418
+     */
419
+    protected function expandUriTemplate($url, array $parameters, array $defaultParameters)
420
+    {
421
+        $parameters += $defaultParameters;
422
+
423
+        static $operatorFlags = [
424
+            ''  => ['prefix' => '',  'separator' => ',', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => FALSE],
425
+            '+' => ['prefix' => '',  'separator' => ',', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => TRUE],
426
+            '#' => ['prefix' => '#', 'separator' => ',', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => TRUE],
427
+            '.' => ['prefix' => '.', 'separator' => '.', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => FALSE],
428
+            '/' => ['prefix' => '/', 'separator' => '/', 'named' => FALSE, 'ifEmpty' => '',  'reserved' => FALSE],
429
+            ';' => ['prefix' => ';', 'separator' => ';', 'named' => TRUE,  'ifEmpty' => '',  'reserved' => FALSE],
430
+            '?' => ['prefix' => '?', 'separator' => '&', 'named' => TRUE,  'ifEmpty' => '=', 'reserved' => FALSE],
431
+            '&' => ['prefix' => '&', 'separator' => '&', 'named' => TRUE,  'ifEmpty' => '=', 'reserved' => FALSE],
432
+        ];
433
+
434
+        return preg_replace_callback('~{([+#./;?&])?([^}]+?)}~', function($m) use ($url, & $parameters, $operatorFlags) {
435
+            $flags = $operatorFlags[$m[1]];
436
+
437
+            $translated = [];
438
+            foreach (explode(',', $m[2]) as $name) {
439
+                $explode = FALSE;
440
+                $maxLength = NULL;
441
+                if (preg_match('~^(.+)(?:(\*)|:(\d+))$~', $name, $tmp)) { // TODO: Speed up?
442
+                    $name = $tmp[1];
443
+                    if (isset($tmp[3])) {
444
+                        $maxLength = (int) $tmp[3];
445
+                    } else {
446
+                        $explode = TRUE;
447
+                    }
448
+                }
449
+
450
+                if (!isset($parameters[$name])) {  // TODO: Throw exception?
451
+                    continue;
452
+                }
453
+
454
+                $value = $parameters[$name];
455
+                if (is_scalar($value)) {
456
+                    $translated[] = $this->prefix($flags, $name, $this->escape($flags, $value, $maxLength));
457
+
458
+                } else {
459
+                    $value = (array) $value;
460
+                    $isAssoc = key($value) !== 0;
461
+
462
+                    // The '*' (explode) modifier
463
+                    if ($explode) {
464
+                        $parts = [];
465
+                        if ($isAssoc) {
466
+                            $this->walk($value, function ($v, $k) use (& $parts, $flags, $maxLength) {
467
+                                $parts[] = $this->prefix(['named' => TRUE] + $flags, $k, $this->escape($flags, $v, $maxLength));
468
+                            });
469
+
470
+                        } elseif ($flags['named']) {
471
+                            $this->walk($value, function ($v) use (& $parts, $flags, $name, $maxLength) {
472
+                                $parts[] = $this->prefix($flags, $name, $this->escape($flags, $v, $maxLength));
473
+                            });
474
+
475
+                        } else {
476
+                            $this->walk($value, function ($v) use (& $parts, $flags, $maxLength) {
477
+                                $parts[] = $this->escape($flags, $v, $maxLength);
478
+                            });
479
+                        }
480
+
481
+                        if (isset($parts[0])) {
482
+                            if ($flags['named']) {
483
+                                $translated[] = implode($flags['separator'], $parts);
484
+                            } else {
485
+                                $translated[] = $this->prefix($flags, $name, implode($flags['separator'], $parts));
486
+                            }
487
+                        }
488
+
489
+                    } else {
490
+                        $parts = [];
491
+                        $this->walk($value, function($v, $k) use (& $parts, $isAssoc, $flags, $maxLength) {
492
+                            if ($isAssoc) {
493
+                                $parts[] = $this->escape($flags, $k);
494
+                            }
495
+
496
+                            $parts[] = $this->escape($flags, $v, $maxLength);
497
+                        });
498
+
499
+                        if (isset($parts[0])) {
500
+                            $translated[] = $this->prefix($flags, $name, implode(',', $parts));
501
+                        }
502
+                    }
503
+                }
504
+            }
505
+
506
+            if (isset($translated[0])) {
507
+                return $flags['prefix'] . implode($flags['separator'], $translated);
508
+            }
509
+
510
+            return '';
511
+        }, $url);
512
+    }
513
+
514
+
515
+    /**
516
+     * @param  array
517
+     * @param  string
518
+     * @param  string  already escaped
519
+     * @return string
520
+     */
521
+    private function prefix(array $flags, $name, $value)
522
+    {
523
+        $prefix = '';
524
+        if ($flags['named']) {
525
+            $prefix .= $this->escape($flags, $name);
526
+            if (isset($value[0])) {
527
+                $prefix .= '=';
528
+            } else {
529
+                $prefix .= $flags['ifEmpty'];
530
+            }
531
+        }
532
+
533
+        return $prefix . $value;
534
+    }
535
+
536
+
537
+    /**
538
+     * @param  array
539
+     * @param  mixed
540
+     * @param  int|NULL
541
+     * @return string
542
+     */
543
+    private function escape(array $flags, $value, $maxLength = NULL)
544
+    {
545
+        $value = (string) $value;
546
+
547
+        if ($maxLength !== NULL) {
548
+            if (preg_match('~^(.{' . $maxLength . '}).~u', $value, $m)) {
549
+                $value = $m[1];
550
+            } elseif (strlen($value) > $maxLength) {  # when malformed UTF-8
551
+                $value = substr($value, 0, $maxLength);
552
+            }
553
+        }
554
+
555
+        if ($flags['reserved']) {
556
+            $parts = preg_split('~(%[0-9a-fA-F]{2}|[:/?#[\]@!$&\'()*+,;=])~', $value, -1, PREG_SPLIT_DELIM_CAPTURE);
557
+            $parts[] = '';
558
+
559
+            $escaped = '';
560
+            for ($i = 0, $count = count($parts); $i < $count; $i += 2) {
561
+                $escaped .= rawurlencode($parts[$i]) . $parts[$i + 1];
562
+            }
563
+
564
+            return $escaped;
565
+        }
566
+
567
+        return rawurlencode($value);
568
+    }
569
+
570
+
571
+    /**
572
+     * @param  array
573
+     * @param  callable
574
+     */
575
+    private function walk(array $array, $cb)
576
+    {
577
+        foreach ($array as $k => $v) {
578
+            if ($v === NULL) {
579
+                continue;
580
+            }
581
+
582
+            $cb($v, $k);
583
+        }
584
+    }
585
+
586
+
587
+    /**
588
+     * @param  \stdClass
589
+     * @return string
590
+     */
591
+    private static function errorMessage($content)
592
+    {
593
+        $message = isset($content->message)
594
+            ? $content->message
595
+            : 'Unknown error';
596
+
597
+        if (isset($content->errors)) {
598
+            $message .= implode(', ', array_map(function($error) {
599
+                return '[' . implode(':', (array) $error) . ']';
600
+            }, $content->errors));
601
+        }
602
+
603
+        return $message;
604
+    }
605 605
 
606 606
 }
Please login to merge, or discard this patch.