Skip to content
39 changes: 27 additions & 12 deletions class/Field.php
Original file line number Diff line number Diff line change
Expand Up @@ -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":
Expand All @@ -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']);
Expand All @@ -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();
}
Expand Down Expand Up @@ -383,7 +395,8 @@ public function getCatid() {
*
* @return string field name
*/
public function getFieldName() {
public function getFieldName(): string
{
return $this->getVar('field_name');
}

Expand All @@ -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);
Expand All @@ -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();
}
Expand Down
54 changes: 33 additions & 21 deletions class/FieldHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand All @@ -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();
Expand All @@ -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');
Expand All @@ -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) {
Expand All @@ -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 = "";
Expand Down Expand Up @@ -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;
Expand All @@ -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')));
Expand All @@ -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',
Expand All @@ -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;
Expand Down Expand Up @@ -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');
Expand All @@ -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;
}
}
}

12 changes: 7 additions & 5 deletions class/VideosHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -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)));
}

/**
Expand Down Expand Up @@ -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;
Expand All @@ -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);
}

Expand All @@ -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;
Expand Down
15 changes: 9 additions & 6 deletions icms_version.php
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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",
Expand Down