diff --git a/class/Field.php b/class/Field.php index 32d452b..217ebe5 100644 --- a/class/Field.php +++ b/class/Field.php @@ -293,6 +293,7 @@ public function getOutputValue(&$user, $profile) { * @return mixed */ public function getValueForSave($value, $oldvalue) { + $value = icms_core_DataFilter::checkVarArray($value); switch ($this->getVar('field_type')) { default: case "textbox": @@ -311,18 +312,28 @@ public function getValueForSave($value, $oldvalue) { case "longdate": return $value; case "date": - if ($value != "") return strtotime($value); - return $value; + if ($value != "") { + return strtotime($value); + } + else { + return $value; + } break; case "datetime": - if ($value != "") return strtotime($value['date']) + $value['time']; - return $value; + if ($value != "") { + return strtotime($value['date']) + $value['time']; + } + else { + return $value; + } break; case "image": - if (!isset($_FILES[$_POST['xoops_upload_file'][0]])) return $oldvalue; + if (!isset($_FILES[$_POST['xoops_upload_file'][0]])) { + return $oldvalue; + } $options = unserialize($this->getVar('field_options', 'n')); - $dirname = ICMS_UPLOAD_PATH.'/'.basename(dirname(dirname(__FILE__))); + $dirname = ICMS_UPLOAD_PATH.'/'.basename(dirname(__FILE__, 2)); if (!is_dir($dirname)) mkdir($dirname); $uploader = new icms_file_MediaUploadHandler($dirname, array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png', 'image/png'), $options['maxsize']*1024, $options['maxwidth'], $options['maxheight']); @@ -348,7 +359,8 @@ public function getValueForSave($value, $oldvalue) { * * @return array */ - private function getUserVars() { + private function getUserVars(): array + { $profile_handler = icms_getModuleHandler('profile', basename(dirname(dirname(__FILE__))), 'profile'); return $profile_handler->getUserVars(); } @@ -383,7 +395,8 @@ public function getCatid() { * * @return string field name */ - public function getFieldName() { + public function getFieldName(): string + { return $this->getVar('field_name'); } @@ -402,9 +415,10 @@ public function getImage() { * generate delete button * * @staticvar icms_ipf_Controller $controller - * @return str linked icon to delete the object + * @return string linked icon to delete the object */ - public function getDeleteButtonForDisplay() { + public function getDeleteButtonForDisplay() + { static $controller = null; if ($this->getVar('system') == 1) return; if ($controller === null) $controller = new icms_ipf_Controller($this->handler); @@ -414,9 +428,10 @@ public function getDeleteButtonForDisplay() { /** * generate textbox control to edit weight on acp * - * @return str textbox control + * @return string textbox control */ - public function getField_weightControl() { + public function getField_weightControl(): string + { $control = new icms_form_elements_Text('', 'field_weight[]', 5, 4, $this->getVar('field_weight')); return $control->render(); } diff --git a/class/FieldHandler.php b/class/FieldHandler.php index 3cca111..fb512ae 100644 --- a/class/FieldHandler.php +++ b/class/FieldHandler.php @@ -24,7 +24,7 @@ class mod_profile_FieldHandler extends icms_ipf_Handler { * @param icms_db_legacy_Database $db */ public function __construct(&$db) { - parent::__construct($db, 'field', 'fieldid', 'field_name', 'field_description', basename(dirname(dirname(__FILE__)))); + parent::__construct($db, 'field', 'fieldid', 'field_name', 'field_description', basename(dirname(__FILE__, 2))); $this->enableUpload(array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png'), 5120, 18, 18); } @@ -34,11 +34,12 @@ public function __construct(&$db) { * @param icms_member_user_Object $thisUser * @return array of profile fields */ - public function getProfileFields(&$thisUser) { + public function getProfileFields(&$thisUser): array + { // get handlers - $category_handler = icms_getModuleHandler('category', basename(dirname(dirname(__FILE__))), 'profile'); - $profile_handler = icms_getModuleHandler('profile', basename(dirname(dirname(__FILE__))), 'profile'); - $visibility_handler = icms_getModuleHandler('visibility', basename(dirname(dirname(__FILE__))), 'profile'); + $category_handler = icms_getModuleHandler('category', basename(dirname(__FILE__, 2)), 'profile'); + $profile_handler = icms_getModuleHandler('profile', basename(dirname(__FILE__, 2)), 'profile'); + $visibility_handler = icms_getModuleHandler('visibility', basename(dirname(__FILE__, 2)), 'profile'); $groups = is_object(icms::$user) ? icms::$user->getGroups() : array(ICMS_GROUP_ANONYMOUS); $criteria = new icms_db_criteria_Compo(); @@ -53,11 +54,13 @@ public function getProfileFields(&$thisUser) { $profile = $profile_handler->get($thisUser->getVar('uid')); unset($category_handler, $visibility_handler, $profile_handler, $criteria); - $module = icms::handler("icms_module")->getByDirname(basename(dirname(dirname(__FILE__))), TRUE); + $module = icms::handler("icms_module")->getByDirname(basename(dirname(__FILE__, 2)), TRUE); $rtn = array(); - for ($i = 0; $i < count($categories); $i++) { + $category_count = count($categories); + for ($i = 0; $i < $category_count; $i++) { $first_category = true; - for ($j = 0; $j < count($fields); $j++) { + $field_count = count($fields); + for ($j = 0; $j < $field_count; $j++) { $value = $fields[$j]->getOutputValue($thisUser, $profile); if ($fields[$j]->getVar('field_show') && $fields[$j]->getVar('catid') == $categories[$i]->getVar('catid') && ($module->config['show_empty'] || trim($value) || $value == '0')) { if ($first_category) $rtn[$i]['title'] = $categories[$i]->getVar('cat_title'); @@ -78,7 +81,8 @@ public function getProfileFields(&$thisUser) { * * @return array */ - public function &loadFields($force_update = false) { + public function &loadFields($force_update = false): array + { static $fields = array(); if ($force_update || count($fields) == 0) { @@ -98,8 +102,10 @@ public function &loadFields($force_update = false) { * * @return bool FALSE if failed, TRUE if already present and unchanged or successful */ - public function insert(&$obj, $force = false, $checkObject = true, $debug = false) { - $profile_handler = icms_getmodulehandler('profile', basename(dirname(dirname(__FILE__))), 'profile'); + + public function insert(&$obj, $force = false, $checkObject = true, $debug = false): bool + { + $profile_handler = icms_getmodulehandler('profile', basename(dirname(__FILE__, 2)), 'profile'); $obj->cleanVars(); $defaultstring = ""; @@ -186,7 +192,7 @@ public function insert(&$obj, $force = false, $checkObject = true, $debug = fals public function filterSteps() { if(!count($this->_stepsArray)) { - $step_handler = icms_getModuleHandler("regstep", basename(dirname(dirname(__FILE__))), "profile"); + $step_handler = icms_getModuleHandler("regstep", basename(dirname(__FILE__, 2)), "profile"); $this->_stepsArray = $step_handler->getList(); } return $this->_stepsArray; @@ -199,13 +205,14 @@ public function filterSteps() { * @param bool $force * @return bool FALSE if failed. **/ - public function delete(&$obj, $force = false) { - $profile_handler = icms_getmodulehandler('profile', basename(dirname(dirname(__FILE__))), 'profile'); + public function delete(&$obj, $force = false): bool + { + $profile_handler = icms_getmodulehandler('profile', basename(dirname(__FILE__, 2)), 'profile'); $sql = "ALTER TABLE ".$profile_handler->table." DROP ".$obj->getVar('field_name', 'n'); if ($this->db->query($sql)) { if (!parent::delete($obj, $force)) return false; if ($obj->getVar('field_show') || $obj->getVar('field_edit')) { - $profile_module = icms::handler('icms_module')->getByDirname(basename(dirname(dirname(__FILE__)))); + $profile_module = icms::handler('icms_module')->getByDirname(basename(dirname(__FILE__, 2))); if (is_object($profile_module)) { // Remove group permissions $criteria = new icms_db_criteria_Compo(new icms_db_criteria_Item('gperm_modid', $profile_module->getVar('mid'))); @@ -222,7 +229,8 @@ public function delete(&$obj, $force = false) { * * @return array */ - public function getUserVars() { + public function getUserVars(): array + { return array('uid', 'uname', 'name', 'email', 'url', 'user_avatar', 'user_regdate', 'user_icq', 'user_from', 'user_sig', 'user_viewemail', 'actkey', 'user_aim', 'user_yim', 'user_msnm', 'pass', 'posts', 'attachsig', 'rank', 'level', 'theme', 'timezone_offset', 'last_login', 'umode', 'uorder', 'notify_method', @@ -235,7 +243,8 @@ public function getUserVars() { * * @return array of field types */ - public function getFieldTypeArray() { + public function getFieldTypeArray(): array + { if (!$this->_fieldTypeArray) { $this->_fieldTypeArray["checkbox"] = _AM_PROFILE_FIELD_TYPE_CHECKBOX; $this->_fieldTypeArray["date"] = _AM_PROFILE_FIELD_TYPE_DATE; @@ -269,9 +278,10 @@ public function getFieldTypeArray() { * * @return array list of categories */ - public function getCategoriesArray() { + public function getCategoriesArray(): array + { if (!$this->_categoriesArray) { - $profile_category_handler = icms_getModuleHandler('category', basename(dirname(dirname(__FILE__))), 'profile'); + $profile_category_handler = icms_getModuleHandler('category', basename(dirname(__FILE__, 2)), 'profile'); $criteria = new icms_db_criteria_Compo(); $criteria->setSort('cat_title'); $criteria->setOrder('ASC'); @@ -289,10 +299,12 @@ public function getCategoriesArray() { * @param mod_profile_Field $obj object * @return bool */ - protected function afterDelete(&$obj) { + protected function afterDelete(&$obj): bool + { $imgPath = $this->getImagePath(); $imgUrl = $obj->getVar('url'); if (!empty($imgUrl)) unlink($imgPath.$imgUrl); return true; } -} \ No newline at end of file +} + diff --git a/class/VideosHandler.php b/class/VideosHandler.php index 7c244df..96ac147 100644 --- a/class/VideosHandler.php +++ b/class/VideosHandler.php @@ -19,7 +19,7 @@ class mod_profile_VideosHandler extends icms_ipf_Handler { * @param icms_db_legacy_Database $db database object */ public function __construct(&$db) { - parent::__construct($db, 'videos', 'videos_id', 'video_title', '', basename(dirname(dirname(__FILE__)))); + parent::__construct($db, 'videos', 'videos_id', 'video_title', '', basename(dirname(__FILE__, 2))); } /** @@ -62,7 +62,8 @@ public function getVideo($videos_id) { * @param int $videos_id ID of a single video to retrieve * @return array of videos */ - public function getVideos($start = 0, $limit = 0, $uid_owner = false, $videos_id = false) { + public function getVideos($start = 0, $limit = 0, $uid_owner = false, $videos_id = false): array + { $criteria = $this->getVideosCriteria($start, $limit, $uid_owner, $videos_id); $ret = $this->getObjects($criteria, true, false); return $ret; @@ -74,7 +75,8 @@ public function getVideos($start = 0, $limit = 0, $uid_owner = false, $videos_id * * @return bool true if he can false if not */ - public function userCanSubmit() { + public function userCanSubmit(): bool + { return is_object(icms::$user); } @@ -88,10 +90,10 @@ public function userCanSubmit() { */ protected function afterInsert(&$obj) { $thisUser = icms::handler("icms_member")->getUser($obj->getVar('uid_owner')); - $module = icms::handler("icms_module")->getByDirname(basename(dirname(dirname(__FILE__))), TRUE); + $module = icms::handler("icms_module")->getByDirname(basename(dirname(__FILE__, 2)), TRUE); $tags['VIDEO_TITLE'] = $obj->getVar('video_title'); $tags['VIDEO_OWNER'] = $thisUser->getVar('uname'); - $tags['VIDEO_URL'] = ICMS_URL.'/modules/'.basename(dirname(dirname(__FILE__))).'/videos.php?uid='.$obj->getVar('uid_owner'); + $tags['VIDEO_URL'] = ICMS_URL.'/modules/'.basename(dirname(__FILE__, 2)).'/videos.php?uid='.$obj->getVar('uid_owner'); icms::handler('icms_data_notification')->triggerEvent('videos', $obj->getVar('uid_owner'), 'new_video', $tags, array(), $module->getVar('mid')); return true; diff --git a/icms_version.php b/icms_version.php index 33b8849..ea254fa 100644 --- a/icms_version.php +++ b/icms_version.php @@ -20,10 +20,12 @@ $modversion = array( /** General Information */ 'name' => _MI_PROFILE_NAME, - 'version' => "2.4", + + 'version' => 2.3, 'description' => _MI_PROFILE_DESC, 'author' => "fiammybe", - 'credits' => "The XOOPS Project, The ImpressCMS Project, The SmartFactory, Ackbarr, Komeia, vaughan, alfred,m0nty, phoenyx, Jan Pedersen, Marcello Brandao, Sina Asghari, Gustavo Pilla.", + 'credits' => "The XOOPS Project, The ImpressCMS Project, The SmartFactory, Ackbarr, Komeia, vaughan, alfred, m0nty, phoenyx, Jan Pedersen, Marcello Brandao, Sina Asghari, Gustavo Pilla.", + 'help' => "", 'license' => "GNU General Public License (GPL)", 'official' => 1, @@ -36,11 +38,12 @@ 'image' => "images/icon_big.png", /* for backward compatibility */ /** Development information */ - 'status_version' => "final", - 'status' => "Final", - 'date' => "24 Dec 2020", + + 'status_version' => "Beta", + 'status' => "Beta", + 'date' => "20 Feb 2022", 'author_word' => "", - 'warning' => _CO_ICMS_WARNING_FINAL, + 'warning' => _CO_ICMS_WARNING_BETA, /** Contributors */ 'developer_website_url' => "https://www.impresscms.org",