Example #1
0
/**
 * Event callback after triggering "user_forum_post_created".
 *
 * @param array $info
 *  Details about forum post.
 */
function nodejs_forum_event_user_forum_post_created_callback($info)
{
    $postID = intval(vartrue($info['data']['post_id'], 0));
    $postUserID = intval(vartrue($info['data']['post_user'], 0));
    $postThreadID = intval(vartrue($info['data']['post_thread'], 0));
    if ($postID === 0 || $postThreadID === 0) {
        return;
    }
    // Get forum plugin preferences.
    $plugForumPrefs = e107::getPlugConfig('forum')->getPref();
    $db = e107::getDb();
    // Load thread.
    $thread = $db->retrieve('forum_thread', '*', 'thread_id = ' . $postThreadID);
    $threadUser = intval(vartrue($thread['thread_user'], 0));
    // Load forum to check (read) permission.
    $forum = $db->retrieve('forum', '*', 'forum_id = ' . intval(vartrue($thread['thread_forum_id'], 0)));
    // Author of the forum post.
    $authorPost = e107::user($postUserID);
    // Author of the forum topic.
    $authorThread = e107::user($threadUser);
    e107_require_once(e_PLUGIN . 'nodejs/nodejs.main.php');
    $template = e107::getTemplate('nodejs_forum');
    $sc = e107::getScBatch('nodejs_forum', true);
    $tp = e107::getParser();
    // Get topic page number.
    $postNum = $db->count('forum_post', '(*)', "WHERE post_id <= " . $postID . " AND post_thread = " . $postThreadID . " ORDER BY post_id ASC");
    $postPage = ceil($postNum / vartrue($plugForumPrefs['postspage'], 10));
    // Push rendered row item into Latest Forum Posts menu.
    $sc_vars = array('author' => $authorPost, 'post' => $info['data'], 'thread' => $thread, 'topicPage' => $postPage);
    $sc->setVars($sc_vars);
    $markup = $tp->parseTemplate($template['MENU']['RECENT']['ITEM'], true, $sc);
    $message = (object) array('broadcast' => true, 'channel' => 'nodejs_notify', 'callback' => 'nodejsForumMenu', 'type' => 'latestForumPosts', 'markup' => $markup);
    nodejs_enqueue_message($message);
    // Broadcast logged in users to inform about new forum post created.
    if ($authorPost) {
        $sc->setVars($sc_vars);
        $markup = $tp->parseTemplate($template['NOTIFICATION']['POST_ALL'], true, $sc);
        // It's a public forum, so broadcast every online user.
        if (intval(vartrue($forum['forum_class'], 0)) === 0) {
            $message = (object) array('broadcast' => true, 'channel' => 'nodejs_notify', 'callback' => 'nodejsForum', 'type' => 'newForumPostAny', 'markup' => $markup, 'exclude' => $postUserID);
            nodejs_enqueue_message($message);
        } else {
            $forumClass = vartrue($forum['forum_class'], 0);
            $db->select('nodejs_presence');
            while ($row = $db->fetch()) {
                if (isset($row['uid']) && check_class($forumClass, null, $row['uid'])) {
                    $message = (object) array('channel' => 'nodejs_user_' . $row['uid'], 'callback' => 'nodejsForum', 'type' => 'newForumPostAny', 'markup' => $markup, 'exclude' => $postUserID);
                    nodejs_enqueue_message($message);
                }
            }
        }
    }
    // Broadcast logged in (thread-author) user to inform about new forum post created in his/her topic.
    if (isset($authorThread['user_id'])) {
        $sc->setVars($sc_vars);
        $markup = $tp->parseTemplate($template['NOTIFICATION']['POST_OWN'], true, $sc);
        $message = (object) array('channel' => 'nodejs_user_' . $authorThread['user_id'], 'callback' => 'nodejsForum', 'type' => 'newForumPostOwn', 'markup' => $markup, 'exclude' => $postUserID);
        nodejs_enqueue_message($message);
    }
}
Example #2
0
function user_avatar_shortcode($parm = null)
{
    global $loop_uid;
    $tp = e107::getParser();
    $width = $tp->thumbWidth;
    $height = $tp->thumbHeight !== 0 ? $tp->thumbHeight : "";
    if (intval($loop_uid) > 0 && trim($parm) == "") {
        $parm = $loop_uid;
    }
    if (is_numeric($parm)) {
        if ($parm == USERID) {
            $image = USERIMAGE;
        } else {
            $row = e107::user($parm);
            $image = $row['user_image'];
        }
    } elseif (!empty($parm)) {
        $image = $parm;
    } elseif (USERIMAGE) {
        $image = USERIMAGE;
    } else {
        $image = "";
    }
    $genericImg = $tp->thumbUrl(e_IMAGE . "generic/blank_avatar.jpg", "w=" . $width . "&h=" . $height, true);
    if (vartrue($image)) {
        if (strpos($image, "://") !== false) {
            $img = $image;
            //$height 	= e107::getPref("im_height",100); // these prefs are too limiting for local images.
            //$width 		= e107::getPref("im_width",100);
        } elseif (substr($image, 0, 8) == "-upload-") {
            $image = substr($image, 8);
            // strip the -upload- from the beginning.
            if (file_exists(e_AVATAR_UPLOAD . $image)) {
                $img = $tp->thumbUrl(e_AVATAR_UPLOAD . $image, "w=" . $width . "&h=" . $height);
            } else {
                $img = $genericImg;
            }
        } elseif (file_exists(e_AVATAR_DEFAULT . $image)) {
            $img = $tp->thumbUrl(e_AVATAR_DEFAULT . $image, "w=" . $width . "&h=" . $height);
        } else {
            $img = $genericImg;
        }
    } else {
        $img = $genericImg;
    }
    $title = ADMIN ? $image : "";
    $text = "<img class='img-rounded user-avatar e-tip' title='" . $title . "' src='" . $img . "' alt='' style='width:" . $width . "px; height:" . $height . "px' />";
    //	return $img;
    return $text;
}
Example #3
0
/**
 * Event callback after triggering "postcomment".
 *
 * @param array $comment
 *  Comment item.
 *
 * $comment contains:
 * - comment_pid
 * - comment_item_id
 * - comment_subject
 * - comment_author_id
 * - comment_author_name
 * - comment_author_email
 * - comment_datestamp
 * - comment_comment
 * - comment_blocked
 * - comment_ip
 * - comment_type
 * - comment_lock
 * - comment_share
 * - comment_nick
 * - comment_time
 * - comment_id
 *
 * getCommentData() returns with array, which contains:
 * - comment_datestamp
 * - comment_author_id
 * - comment_author
 * - comment_comment
 * - comment_subject
 * - comment_type
 * - comment_title
 * - comment_url
 */
function nodejs_comment_event_postcomment_callback($comment)
{
    e107_require_once(e_PLUGIN . 'nodejs/nodejs.main.php');
    $tpl = e107::getTemplate('nodejs_comment');
    $sc = e107::getScBatch('nodejs_comment', true);
    $tp = e107::getParser();
    $cm = e107::getComment();
    $cid = (int) vartrue($comment['comment_id'], 0);
    $pid = (int) vartrue($comment['comment_pid'], 0);
    $uid = (int) vartrue($comment['comment_author_id'], 0);
    $commentData = $cm->getCommentData(1, 0, 'comment_id=' . $cid);
    if (!isset($commentData[0])) {
        return;
    }
    $authorData = e107::user($uid);
    // Send notification to everyone for updating latest comments menu.
    $sc->setVars($commentData[0]);
    $markup = $tp->parseTemplate($tpl['MENU']['LATEST']['ITEM'], true, $sc);
    $message = (object) array('broadcast' => true, 'channel' => 'nodejs_notify', 'callback' => 'nodejsCommentMenu', 'type' => 'latestComments', 'markup' => $markup);
    nodejs_enqueue_message($message);
    // Send notification to everyone for notifying about new comment.
    $sc->setVars(array('account' => $authorData, 'comment' => $commentData[0]));
    $markup = $tp->parseTemplate($tpl['NOTIFICATION']['POST_ALL'], true, $sc);
    $message = (object) array('broadcast' => true, 'channel' => 'nodejs_notify', 'callback' => 'nodejsComments', 'type' => 'newCommentAny', 'markup' => $markup, 'exclude' => $authorData['user_id']);
    nodejs_enqueue_message($message);
    // Reply on comment.
    if ($pid > 0) {
        $commentParentData = $cm->getCommentData(1, 0, 'comment_id=' . $pid);
        array_pop($commentParentData);
        $authorParentData = e107::user();
        // Send notification to author of parent comment for notifying about new reply.
        $sc->setVars(array('account' => $authorData, 'comment' => $commentData[0]));
        $markup = $tp->parseTemplate($tpl['NOTIFICATION']['POST_OWN'], true, $sc);
        $message = (object) array('channel' => 'nodejs_user_' . $authorParentData['user_id'], 'callback' => 'nodejsComments', 'type' => 'newCommentOwn', 'markup' => $markup, 'exclude' => $authorData['user_id']);
        nodejs_enqueue_message($message);
    }
}
Example #4
0
 /**
  * Retrieve the value of an extended field
  *
  *  $ue = new e107_user_extended;
  *	$value = $ue->user_extended_getvalue(2, 'location');
  *
  */
 function user_extended_getvalue($uid, $field_name, $ifnotset = false)
 {
     $uid = intval($uid);
     if (substr($field_name, 0, 5) != 'user_') {
         $field_name = 'user_' . $field_name;
     }
     $uinfo = e107::user($uid);
     if (!isset($uinfo[$field_name])) {
         return $ifnotset;
     }
     return $uinfo[$field_name];
 }
Example #5
0
 /**
  * Render Field Value
  * @param string $field field name
  * @param mixed $value field value
  * @param array $attributes field attributes including render parameters, element options - see e_admin_ui::$fields for required format
  * @return string
  */
 function renderValue($field, $value, $attributes, $id = 0)
 {
     if (!empty($attributes['multilan']) && is_array($value)) {
         $value = varset($value[e_LANGUAGE], '');
     }
     $parms = array();
     if (isset($attributes['readParms'])) {
         if (!is_array($attributes['readParms'])) {
             parse_str($attributes['readParms'], $attributes['readParms']);
         }
         $parms = $attributes['readParms'];
     }
     if (vartrue($attributes['inline'])) {
         $parms['editable'] = true;
     }
     // attribute alias
     if (vartrue($attributes['sort'])) {
         $parms['sort'] = true;
     }
     // attribute alias
     if (!empty($parms['type'])) {
         $attributes['type'] = $parms['type'];
     }
     $this->renderValueTrigger($field, $value, $parms, $id);
     $tp = e107::getParser();
     switch ($field) {
         case 'options':
             if (varset($attributes['type']) == "method") {
                 $attributes['mode'] = "read";
                 if (isset($attributes['method']) && $attributes['method'] && method_exists($this, $attributes['method'])) {
                     $method = $attributes['method'];
                     return $this->{$method}($parms, $value, $id, $attributes);
                 } elseif (method_exists($this, 'options')) {
                     //return  $this->options($field, $value, $attributes, $id);
                     // consistent method arguments, fixed in admin cron administration
                     return $this->options($parms, $value, $id, $attributes);
                     // OLD breaks admin->cron 'options' column
                 }
             }
             if (!$value) {
                 parse_str(str_replace('&amp;', '&', e_QUERY), $query);
                 //FIXME - FIX THIS
                 // keep other vars in tact
                 $query['action'] = 'edit';
                 $query['id'] = $id;
                 //$edit_query = array('mode' => varset($query['mode']), 'action' => varset($query['action']), 'id' => $id);
                 $query = http_build_query($query);
                 $value = "<div class='btn-group'>";
                 if (vartrue($parms['sort'])) {
                     $mode = preg_replace('/[^\\w]/', '', vartrue($_GET['mode'], ''));
                     $from = intval(vartrue($_GET['from'], 0));
                     $value .= "<a class='e-sort sort-trigger btn btn-default' style='cursor:move' data-target='" . e_SELF . "?mode={$mode}&action=sort&ajax_used=1&from={$from}' title='" . LAN_RE_ORDER . "'>" . ADMIN_SORT_ICON . "</a> ";
                 }
                 $cls = false;
                 if (varset($parms['editClass'])) {
                     $cls = deftrue($parms['editClass']) ? constant($parms['editClass']) : $parms['editClass'];
                 }
                 if ((false === $cls || check_class($cls)) && varset($parms['edit'], 1) == 1) {
                     /*
                     						$value .= "<a href='".e_SELF."?{$query}' class='e-tip btn btn-large' title='".LAN_EDIT."' data-placement='left'>
                     <img class='icon action edit list' src='".ADMIN_EDIT_ICON_PATH."' alt='".LAN_EDIT."' /></a>";
                     */
                     $value .= "<a href='" . e_SELF . "?{$query}' class='btn btn-default' title='" . LAN_EDIT . "' data-toggle='tooltip' data-placement='left'>\r\n\t\t\t\t\t\t" . ADMIN_EDIT_ICON . "</a>";
                 }
                 $delcls = vartrue($attributes['noConfirm']) ? ' no-confirm' : '';
                 if (varset($parms['deleteClass']) && varset($parms['delete'], 1) == 1) {
                     $cls = deftrue($parms['deleteClass']) ? constant($parms['deleteClass']) : $parms['deleteClass'];
                     if (check_class($cls)) {
                         $value .= $this->submit_image('etrigger_delete[' . $id . ']', $id, 'delete', LAN_DELETE . ' [ ID: ' . $id . ' ]', array('class' => 'action delete btn btn-default' . $delcls));
                     }
                 } else {
                     $value .= $this->submit_image('etrigger_delete[' . $id . ']', $id, 'delete', LAN_DELETE . ' [ ID: ' . $id . ' ]', array('class' => 'action delete btn btn-default' . $delcls));
                 }
             }
             //$attributes['type'] = 'text';
             $value .= "</div>";
             return $value;
             break;
         case 'checkboxes':
             $value = $this->checkbox(vartrue($attributes['toggle'], 'multiselect') . '[' . $id . ']', $id);
             //$attributes['type'] = 'text';
             return $value;
             break;
     }
     switch ($attributes['type']) {
         case 'number':
             if (!$value) {
                 $value = '0';
             }
             if ($parms) {
                 if (!isset($parms['sep'])) {
                     $value = number_format($value, $parms['decimals']);
                 } else {
                     $value = number_format($value, $parms['decimals'], vartrue($parms['point'], '.'), vartrue($parms['sep'], ' '));
                 }
             }
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 $mode = preg_replace('/[^\\w]/', '', vartrue($_GET['mode'], ''));
                 $value = "<a class='e-tip e-editable editable-click' data-name='" . $field . "' title=\"" . LAN_EDIT . " " . $attributes['title'] . "\" data-type='text' data-pk='" . $id . "' data-url='" . e_SELF . "?mode={$mode}&action=inline&id={$id}&ajax_used=1' href='#'>" . $value . "</a>";
             }
             $value = vartrue($parms['pre']) . $value . vartrue($parms['post']);
             // else same
             break;
         case 'ip':
             //$e107 = e107::getInstance();
             $value = e107::getIPHandler()->ipDecode($value);
             // else same
             break;
         case 'templates':
         case 'layouts':
             $pre = vartrue($parms['pre']);
             $post = vartrue($parms['post']);
             unset($parms['pre'], $parms['post']);
             if ($parms) {
                 $attributes['writeParms'] = $parms;
             } elseif (isset($attributes['writeParms'])) {
                 if (is_string($attributes['writeParms'])) {
                     parse_str($attributes['writeParms'], $attributes['writeParms']);
                 }
             }
             $attributes['writeParms']['raw'] = true;
             $tmp = $this->renderElement($field, '', $attributes);
             // Inline Editing.  //@SecretR - please FIXME!
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 $mode = preg_replace('/[^\\w]/', '', vartrue($_GET['mode'], ''));
                 $source = str_replace('"', "'", json_encode($wparms));
                 $value = "<a class='e-tip e-editable editable-click' data-name='" . $field . "' data-source=\"" . $source . "\" title=\"" . LAN_EDIT . " " . $attributes['title'] . "\" data-type='select' data-pk='" . $id . "' data-url='" . e_SELF . "?mode=&amp;action=inline&amp;id={$id}&amp;ajax_used=1' href='#'>" . $value . "</a>";
             }
             //	$value = $pre.vartrue($tmp[$value]).$post; // FIXME "Fatal error: Only variables can be passed by reference" featurebox list page.
             break;
         case 'checkboxes':
         case 'comma':
         case 'dropdown':
             // XXX - should we use readParams at all here? see writeParms check below
             if ($parms && is_array($parms)) {
                 //FIXME return no value at all when 'editable=1' is a readParm. See FAQs templates.
                 //	$value = vartrue($parms['pre']).vartrue($parms[$value]).vartrue($parms['post']);
                 //	break;
             }
             // NEW - multiple (array values) support
             // FIXME - add support for multi-level arrays (option groups)
             if (!is_array($attributes['writeParms'])) {
                 parse_str($attributes['writeParms'], $attributes['writeParms']);
             }
             $wparms = $attributes['writeParms'];
             if (!is_array(varset($wparms['__options']))) {
                 parse_str($wparms['__options'], $wparms['__options']);
             }
             if (!empty($wparms['optArray'])) {
                 $fopts = $wparms;
                 $wparms = $fopts['optArray'];
                 unset($fopts['optArray']);
                 $wparms['__options'] = $fopts;
             }
             $opts = $wparms['__options'];
             unset($wparms['__options']);
             $_value = $value;
             if ($attributes['type'] == 'checkboxes' || $attributes['type'] == 'comma') {
                 $opts['multiple'] = true;
             }
             if (vartrue($opts['multiple'])) {
                 $ret = array();
                 $value = is_array($value) ? $value : explode(',', $value);
                 foreach ($value as $v) {
                     if (isset($wparms[$v])) {
                         $ret[] = $wparms[$v];
                     }
                 }
                 $value = implode(', ', $ret);
             } else {
                 $ret = '';
                 if (isset($wparms[$value])) {
                     $ret = $wparms[$value];
                 }
                 $value = $ret;
             }
             $value = $value ? vartrue($parms['pre']) . defset($value, $value) . vartrue($parms['post']) : '';
             // Inline Editing.
             // Inline Editing with 'comma' @SecretR - please FIXME - empty values added. @see news 'render type' or 'media-manager' category for test examples.
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 $xtype = $attributes['type'] == 'dropdown' ? 'select' : 'checklist';
                 //	$value = "<a class='e-tip e-editable editable-click' data-name='".$field."' data-value='{$_value}' data-source=\"".$source."\" title=\"".LAN_EDIT." ".$attributes['title']."\" data-type='".$xtype."' data-pk='".$id."' data-url='".e_SELF."?mode=&amp;action=inline&amp;id={$id}&amp;ajax_used=1' href='#'>".$value."</a>";
                 $value = $this->renderInline($field, $id, $attributes['title'], $_value, $value, $xtype, $wparms);
             }
             // return ;
             break;
         case 'radio':
             if ($parms && is_array($parms)) {
                 $value = vartrue($parms['pre']) . vartrue($parms[$value]) . vartrue($parms['post']);
                 break;
             }
             if (!is_array($attributes['writeParms'])) {
                 parse_str($attributes['writeParms'], $attributes['writeParms']);
             }
             $value = vartrue($attributes['writeParms']['__options']['pre']) . vartrue($attributes['writeParms'][$value]) . vartrue($attributes['writeParms']['__options']['post']);
             break;
         case 'tags':
             if (!empty($parms['constant'])) {
                 $value = defset($value, $value);
             }
             if (vartrue($parms['truncate'])) {
                 $value = $tp->text_truncate($value, $parms['truncate'], '...');
             } elseif (vartrue($parms['htmltruncate'])) {
                 $value = $tp->html_truncate($value, $parms['htmltruncate'], '...');
             }
             if (vartrue($parms['wrap'])) {
                 $value = $tp->htmlwrap($value, (int) $parms['wrap'], varset($parms['wrapChar'], ' '));
             }
             if (vartrue($parms['link']) && $id) {
                 $link = str_replace('[id]', $id, $parms['link']);
                 $link = $tp->replaceConstants($link);
                 // SEF URL is not important since we're in admin.
                 $dialog = vartrue($parms['target']) == 'dialog' ? " e-dialog" : "";
                 // iframe
                 $ext = vartrue($parms['target']) == 'blank' ? " rel='external' " : "";
                 // new window
                 $modal = vartrue($parms['target']) == 'modal' ? " data-toggle='modal' data-cache='false' data-target='#uiModal' " : "";
                 if ($parms['link'] == 'sef' && $this->getController()->getListModel()) {
                     $model = $this->getController()->getListModel();
                     // copy url config
                     if (!$model->getUrl()) {
                         $model->setUrl($this->getController()->getUrl());
                     }
                     // assemble the url
                     $link = $model->url();
                 } elseif (vartrue($data[$parms['link']])) {
                     $link = $tp->replaceConstants(vartrue($data[$parms['link']]));
                 }
                 // in case something goes wrong...
                 if ($link) {
                     $value = "<a class='e-tip{$dialog}' {$ext} href='" . $link . "' {$modal} title='Quick View' >" . $value . "</a>";
                 }
             }
             if (empty($value)) {
                 $value = '-';
                 $setValue = "data-value=''";
             } else {
                 $setValue = "";
                 if ($attributes['type'] == 'tags' && !empty($value)) {
                     $setValue = "data-value='" . $value . "'";
                     $value = str_replace(",", ", ", $value);
                     // add spaces so it wraps, but don't change the actual values.
                 }
             }
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 $options['selectize'] = array('create' => true, 'maxItems' => 7, 'mode' => 'multi', 'e_editable' => $field . '_' . $id);
                 $tpl = $this->text($field, $value, 80, $options);
                 $mode = preg_replace('/[^\\w]/', '', vartrue($_GET['mode'], ''));
                 $value = "<a id='" . $field . '_' . $id . "' class='e-tip e-editable editable-click editable-tags' data-emptytext='-' data-tpl='" . str_replace("'", '"', $tpl) . "' data-name='" . $field . "' title=\"" . LAN_EDIT . " " . $attributes['title'] . "\" data-type='text' data-pk='" . $id . "' " . $setValue . " data-url='" . e_SELF . "?mode={$mode}&amp;action=inline&amp;id={$id}&amp;ajax_used=1' href='#'>" . $value . "</a>";
             }
             $value = vartrue($parms['pre']) . $value . vartrue($parms['post']);
             break;
         case 'text':
             if (!empty($parms['constant'])) {
                 $value = defset($value, $value);
             }
             if (vartrue($parms['truncate'])) {
                 $value = $tp->text_truncate($value, $parms['truncate'], '...');
             } elseif (vartrue($parms['htmltruncate'])) {
                 $value = $tp->html_truncate($value, $parms['htmltruncate'], '...');
             }
             if (vartrue($parms['wrap'])) {
                 $value = $tp->htmlwrap($value, (int) $parms['wrap'], varset($parms['wrapChar'], ' '));
             }
             if (vartrue($parms['link']) && $id) {
                 $link = str_replace('[id]', $id, $parms['link']);
                 $link = $tp->replaceConstants($link);
                 // SEF URL is not important since we're in admin.
                 $dialog = vartrue($parms['target']) == 'dialog' ? " e-dialog" : "";
                 // iframe
                 $ext = vartrue($parms['target']) == 'blank' ? " rel='external' " : "";
                 // new window
                 $modal = vartrue($parms['target']) == 'modal' ? " data-toggle='modal' data-cache='false' data-target='#uiModal' " : "";
                 if ($parms['link'] == 'sef' && $this->getController()->getListModel()) {
                     $model = $this->getController()->getListModel();
                     // copy url config
                     if (!$model->getUrl()) {
                         $model->setUrl($this->getController()->getUrl());
                     }
                     // assemble the url
                     $link = $model->url();
                 } elseif (vartrue($data[$parms['link']])) {
                     $link = $tp->replaceConstants(vartrue($data[$parms['link']]));
                 }
                 // in case something goes wrong...
                 if ($link) {
                     $value = "<a class='e-tip{$dialog}' {$ext} href='" . $link . "' {$modal} title='Quick View' >" . $value . "</a>";
                 }
             }
             if (empty($value)) {
                 $value = '-';
                 $setValue = "data-value=''";
             } else {
                 $setValue = "";
                 if ($attributes['type'] == 'tags' && !empty($value)) {
                     $setValue = "data-value='" . $value . "'";
                     $value = str_replace(",", ", ", $value);
                     // add spaces so it wraps, but don't change the actual values.
                 }
             }
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 $mode = preg_replace('/[^\\w]/', '', vartrue($_GET['mode'], ''));
                 $value = "<a class='e-tip e-editable editable-click' data-emptytext='-' data-name='" . $field . "' title=\"" . LAN_EDIT . " " . $attributes['title'] . "\" data-type='text' data-pk='" . $id . "' " . $setValue . " data-url='" . e_SELF . "?mode={$mode}&amp;action=inline&amp;id={$id}&amp;ajax_used=1' href='#'>" . $value . "</a>";
             }
             $value = vartrue($parms['pre']) . $value . vartrue($parms['post']);
             break;
         case 'bbarea':
         case 'textarea':
             if ($attributes['type'] == 'textarea' && !vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 return $this->renderInline($field, $id, $attributes['title'], $value, substr($value, 0, 50) . "...", 'textarea');
                 //FIXME.
             }
             $expand = '...';
             $toexpand = false;
             if ($attributes['type'] == 'bbarea' && !isset($parms['bb'])) {
                 $parms['bb'] = true;
             }
             //force bb parsing for bbareas
             $elid = trim(str_replace('_', '-', $field)) . '-' . $id;
             if (!vartrue($parms['noparse'])) {
                 $value = $tp->toHTML($value, vartrue($parms['bb']) ? true : false, vartrue($parms['parse']));
             }
             if (vartrue($parms['expand']) || vartrue($parms['truncate']) || vartrue($parms['htmltruncate'])) {
                 $ttl = vartrue($parms['expand']);
                 if ($ttl == 1) {
                     $ttl = $expand . "<button class='btn btn-default btn-xs btn-mini pull-right'>More..</button>";
                     $ttl1 = "<button class='btn btn-default btn-xs btn-mini pull-right'>..Less</button>";
                 } else {
                     $ttl1 = null;
                 }
                 $expands = '<a href="#' . $elid . '-expand" class="e-show-if-js e-expandit">' . defset($ttl, $ttl) . "</a>";
                 $contracts = '<a href="#' . $elid . '-expand" class="e-show-if-js e-expandit">' . defset($ttl1, $ttl1) . "</a>";
             }
             $oldval = $value;
             if (vartrue($parms['truncate'])) {
                 $value = $oldval = strip_tags($value);
                 $value = $tp->text_truncate($value, $parms['truncate'], '');
                 $toexpand = $value != $oldval;
             } elseif (vartrue($parms['htmltruncate'])) {
                 $value = $tp->html_truncate($value, $parms['htmltruncate'], '');
                 $toexpand = $value != $oldval;
             }
             if ($toexpand) {
                 // force hide! TODO - core style .expand-c (expand container)
                 // TODO: Hide 'More..' button when text fully displayed.
                 $value .= '<span class="expand-c" style="display: none" id="' . $elid . '-expand"><span>' . str_replace($value, '', $oldval) . $contracts . '</span></span>';
                 $value .= $expands;
                 // 'More..' button. Keep it at the bottom so it does't cut the sentence.
             }
             break;
         case 'icon':
             $value = $tp->toIcon($value, array('size' => '2x'));
             break;
         case 'file':
             if (vartrue($parms['base'])) {
                 $url = $parms['base'] . $value;
             } else {
                 $url = e107::getParser()->replaceConstants($value, 'full');
             }
             $name = basename($value);
             $value = '<a href="' . $url . '" title="Direct link to ' . $name . '" rel="external">' . $name . '</a>';
             break;
         case 'image':
             //TODO - thumb, js tooltip...
             if ($value) {
                 if (strpos($value, ",") !== false) {
                     $tmp = explode(",", $value);
                     $value = $tmp[0];
                     unset($tmp);
                 }
                 $vparm = array('thumb' => 'tag', 'w' => vartrue($parms['thumb_aw'], '80'));
                 if ($video = e107::getParser()->toVideo($value, $vparm)) {
                     return $video;
                 }
                 $fileOnly = basename($value);
                 // Not an image but a file.  (media manager)
                 if (!preg_match("/\\.(png|jpg|jpeg|gif|PNG|JPG|JPEG|GIF)\$/", $fileOnly) && false !== strpos($fileOnly, '.')) {
                     $icon = "{e_IMAGE}filemanager/zip_32.png";
                     $src = $tp->replaceConstants(vartrue($parms['pre']) . $icon, 'abs');
                     //	return $value;
                     return e107::getParser()->toGlyph('fa-file', 'size=2x');
                     //		return '<img src="'.$src.'" alt="'.$value.'" class="e-thumb" title="'.$value.'" />';
                 }
                 if (vartrue($parms['thumb'])) {
                     $thparms = array();
                     // Support readParms example: thumb=1&w=200&h=300
                     // Support readParms example: thumb=1&aw=80&ah=30
                     if (isset($parms['h'])) {
                         $thparms['h'] = intval($parms['h']);
                     }
                     if (isset($parms['ah'])) {
                         $thparms['ah'] = intval($parms['ah']);
                     }
                     if (isset($parms['w'])) {
                         $thparms['w'] = intval($parms['w']);
                     }
                     if (isset($parms['aw'])) {
                         $thparms['aw'] = intval($parms['aw']);
                     }
                     // Support readParms example: thumb=200x300 (wxh)
                     if (strpos($parms['thumb'], 'x') !== false) {
                         list($thparms['w'], $thparms['h']) = explode('x', $parms['thumb']);
                     }
                     // Support readParms example: thumb={width}
                     if (!isset($parms['w']) && is_numeric($parms['thumb']) && '1' != $parms['thumb']) {
                         $thparms['w'] = intval($parms['thumb']);
                     } elseif (vartrue($parms['thumb_aw'])) {
                         $thparms['aw'] = intval($parms['thumb_aw']);
                     }
                     //	return print_a($thparms,true);
                     $src = $tp->replaceConstants(vartrue($parms['pre']) . $value, 'abs');
                     $thsrc = $tp->thumbUrl(vartrue($parms['pre']) . $value, $thparms, varset($parms['thumb_urlraw']));
                     $alt = basename($src);
                     $ttl = '<img src="' . $thsrc . '" alt="' . $alt . '" class="thumbnail e-thumb" />';
                     $value = '<a href="' . $src . '" data-modal-caption="' . $alt . '" data-target="#uiModal" class="e-modal e-image-preview" title="' . $alt . '" rel="external">' . $ttl . '</a>';
                 } else {
                     $src = $tp->replaceConstants(vartrue($parms['pre']) . $value, 'abs');
                     $alt = $src;
                     //basename($value);
                     $ttl = vartrue($parms['title'], 'LAN_PREVIEW');
                     $value = '<a href="' . $src . '" class="e-image-preview" title="' . $alt . '" rel="external">' . defset($ttl, $ttl) . '</a>';
                 }
             }
             break;
         case 'files':
             $ret = '<ol>';
             for ($i = 0; $i < 5; $i++) {
                 $k = $key . '[' . $i . '][path]';
                 $ival = $value[$i]['path'];
                 $ret .= '<li>' . $ival . '</li>';
             }
             $ret .= '</ol>';
             $value = $ret;
             break;
         case 'datestamp':
             $value = $value ? e107::getDate()->convert_date($value, vartrue($parms['mask'], 'short')) : '';
             break;
         case 'date':
             // just show original value
             break;
         case 'userclass':
             $dispvalue = $this->_uc->uc_get_classname($value);
             // Inline Editing.
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 $mode = preg_replace('/[^\\w]/', '', vartrue($_GET['mode'], ''));
                 $uc_options = vartrue($parms['classlist'], 'public,guest,nobody,member,admin,main,classes');
                 // defaults to 'public,guest,nobody,member,classes' (userclass handler)
                 unset($parms['classlist']);
                 $array = e107::getUserClass()->uc_required_class_list($uc_options);
                 //XXX Ugly looking (non-standard) function naming - TODO discuss name change.
                 $source = str_replace('"', "'", json_encode($array, JSON_FORCE_OBJECT));
                 //NOTE Leading ',' required on $value; so it picks up existing value.
                 $value = "<a class='e-tip e-editable editable-click' data-placement='left' data-value='" . $value . "' data-name='" . $field . "' data-source=\"" . $source . "\" title=\"" . LAN_EDIT . " " . $attributes['title'] . "\" data-type='select' data-pk='" . $id . "' data-url='" . e_SELF . "?mode={$mode}&amp;action=inline&amp;id={$id}&amp;ajax_used=1' href='#'>" . $dispvalue . "</a>";
             } else {
                 $value = $dispvalue;
             }
             break;
         case 'userclasses':
             //	return $value;
             $classes = explode(',', $value);
             $uv = array();
             foreach ($classes as $cid) {
                 if (!empty($parms['defaultLabel']) && $cid === '') {
                     $uv[] = $parms['defaultLabel'];
                     continue;
                 }
                 $uv[] = $this->_uc->getName($cid);
             }
             $dispvalue = implode(vartrue($parms['separator'], "<br />"), $uv);
             // Inline Editing.
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 $uc_options = vartrue($parms['classlist'], 'public,guest, nobody,member,admin,main,classes');
                 // defaults to 'public,guest,nobody,member,classes' (userclass handler)
                 $array = e107::getUserClass()->uc_required_class_list($uc_options);
                 //XXX Ugly looking (non-standard) function naming - TODO discuss name change.
                 //$mode = preg_replace('/[^\w]/', '', vartrue($_GET['mode'], ''));
                 $mode = $tp->filter(vartrue($_GET['mode'], ''), 'w');
                 $source = str_replace('"', "'", json_encode($array, JSON_FORCE_OBJECT));
                 //NOTE Leading ',' required on $value; so it picks up existing value.
                 $value = "<a class='e-tip e-editable editable-click' data-placement='bottom' data-value='," . $value . "' data-name='" . $field . "' data-source=\"" . $source . "\" title=\"" . LAN_EDIT . " " . $attributes['title'] . "\" data-type='checklist' data-pk='" . $id . "' data-url='" . e_SELF . "?mode={$mode}&amp;action=inline&amp;id={$id}&amp;ajax_used=1' href='#'>" . $dispvalue . "</a>";
             } else {
                 $value = $dispvalue;
             }
             unset($parms['classlist']);
             break;
             /*case 'user_name':
             		case 'user_loginname':
             		case 'user_login':
             		case 'user_customtitle':
             		case 'user_email':*/
         /*case 'user_name':
         		case 'user_loginname':
         		case 'user_login':
         		case 'user_customtitle':
         		case 'user_email':*/
         case 'user':
             /*if(is_numeric($value))
             		{
             			$value = e107::user($value);
             			if($value)
             			{
             				$value = $value[$attributes['type']] ? $value[$attributes['type']] : $value['user_name'];
             			}
             			else
             			{
             				$value = 'not found';
             			}
             		}*/
             $row_id = $id;
             // Dirty, but the only way for now
             $id = 0;
             $ttl = LAN_ANONYMOUS;
             //Defaults to user_id and user_name (when present) and when idField and nameField are not present.
             // previously set - real parameters are idField && nameField
             $id = vartrue($parms['__idval']);
             if ($value && !is_numeric($value)) {
                 $id = vartrue($parms['__idval']);
                 $ttl = $value;
             } elseif ($value && is_numeric($value)) {
                 $id = $value;
                 if (vartrue($parms['__nameval'])) {
                     $ttl = $parms['__nameval'];
                 } else {
                     $user = e107::user($value);
                     if (vartrue($user['user_name'])) {
                         $ttl = $user['user_name'];
                     }
                 }
             }
             if (!empty($parms['link']) && $id && $ttl && is_numeric($id)) {
                 // Stay in admin area.
                 $link = e_ADMIN . "users.php?mode=main&action=edit&id=" . $id . "&readonly=1&iframe=1";
                 // e107::getUrl()->create('user/profile/view', array('id' => $id, 'name' => $ttl))
                 $value = '<a class="e-modal" data-modal-caption="User #' . $id . ' : ' . $ttl . '" href="' . $link . '" title="Go to user profile">' . $ttl . '</a>';
             } else {
                 $value = $ttl;
             }
             // Inline Editing.
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 // Need a Unique Field ID to store field settings using e107::js('settings').
                 $fieldID = $this->name2id($field . '_' . microtime(true));
                 // Unique ID for each rows.
                 $eEditableID = $this->name2id($fieldID . '_' . $row_id);
                 $tpl = $this->userpicker($field, '', $ttl, $id, array('id' => $fieldID, 'selectize' => array('e_editable' => $eEditableID)));
                 $mode = preg_replace('/[^\\w]/', '', vartrue($_GET['mode'], ''));
                 $value = "<a id='" . $eEditableID . "' class='e-tip e-editable editable-click editable-userpicker' data-clear='false' data-tpl='" . str_replace("'", '"', $tpl) . "' data-name='" . $field . "' title=\"" . LAN_EDIT . " " . $attributes['title'] . "\" data-type='text' data-pk='" . $row_id . "' data-value='" . $id . "' data-url='" . e_SELF . "?mode={$mode}&amp;action=inline&amp;id={$row_id}&amp;ajax_used=1' href='#'>" . $ttl . "</a>";
             }
             break;
         case 'bool':
         case 'boolean':
             $false = vartrue($parms['trueonly']) ? "" : ADMIN_FALSE_ICON;
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) {
                 if (isset($parms['false'])) {
                     $false = $parms['false'];
                 } else {
                     $false = $value === '' ? "&square;" : "&cross;";
                 }
                 $true = varset($parms['true'], '&check;');
                 // custom representation for 'true'. (supports font-awesome when set by css)
                 $value = intval($value);
                 $wparms = vartrue($parms['reverse']) ? array(0 => $true, 1 => $false) : array(0 => $false, 1 => $true);
                 $dispValue = $wparms[$value];
                 return $this->renderInline($field, $id, $attributes['title'], $value, $dispValue, 'select', $wparms);
             }
             if (vartrue($parms['reverse'])) {
                 $value = $value ? $false : ADMIN_TRUE_ICON;
             } else {
                 $value = $value ? ADMIN_TRUE_ICON : $false;
             }
             break;
         case 'url':
             if (!$value) {
                 break;
             }
             $ttl = $value;
             if (vartrue($parms['href'])) {
                 return $tp->replaceConstants(vartrue($parms['pre']) . $value, varset($parms['replace_mod'], 'abs'));
             }
             if (vartrue($parms['truncate'])) {
                 $ttl = $tp->text_truncate($value, $parms['truncate'], '...');
             }
             $value = "<a href='" . $tp->replaceConstants(vartrue($parms['pre']) . $value, 'abs') . "' title='{$value}'>" . $ttl . "</a>";
             break;
         case 'email':
             if (!$value) {
                 break;
             }
             $ttl = $value;
             if (vartrue($parms['truncate'])) {
                 $ttl = $tp->text_truncate($value, $parms['truncate'], '...');
             }
             $value = "<a href='mailto:" . $value . "' title='{$value}'>" . $ttl . "</a>";
             break;
         case 'method':
             // Custom Function
             $method = $attributes['field'];
             // prevents table alias in method names. ie. u.my_method.
             $_value = $value;
             if ($attributes['data'] == 'array') {
                 $value = e107::unserialize($value);
                 // (saved as array, return it as an array)
             }
             $meth = !empty($attributes['method']) ? $attributes['method'] : $method;
             if (method_exists($this, $meth)) {
                 $parms['field'] = $field;
                 $value = call_user_func_array(array($this, $meth), array($value, 'read', $parms));
             } else {
                 return "<span class='label label-important label-danger'>Missing: " . $method . "()</span>";
             }
             //	 print_a($attributes);
             // Inline Editing.
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable'])) {
                 $mode = preg_replace('/[^\\w]/', '', vartrue($_GET['mode'], ''));
                 $methodParms = call_user_func_array(array($this, $method), array($value, 'inline', $parms));
                 if (!empty($methodParms['inlineType'])) {
                     $attributes['inline'] = $methodParms['inlineType'];
                     $methodParms = !empty($methodParms['inlineData']) ? $methodParms['inlineData'] : null;
                 }
                 if (is_string($attributes['inline'])) {
                     switch ($attributes['inline']) {
                         case 'checklist':
                             $xtype = 'checklist';
                             break;
                         case 'select':
                         case 'dropdown':
                             $xtype = 'select';
                             break;
                         case 'textarea':
                             $xtype = 'textarea';
                             break;
                         default:
                             $xtype = 'text';
                             $methodParms = null;
                             break;
                     }
                 }
                 if (!empty($xtype)) {
                     $value = $this->renderInline($field, $id, $attributes['title'], $_value, $value, $xtype, $methodParms);
                 }
             }
             break;
         case 'hidden':
             return vartrue($parms['show']) ? $value ? $value : vartrue($parms['empty']) : '';
             break;
         case 'language':
             // All Known Languages.
             if (!empty($value)) {
                 $_value = $value;
                 if (strlen($value) === 2) {
                     $value = e107::getLanguage()->convert($value);
                 }
             }
             if (!vartrue($attributes['noedit']) && vartrue($parms['editable'])) {
                 $wparms = e107::getLanguage()->getList();
                 return $this->renderInline($field, $id, $attributes['title'], $_value, $value, 'select', $wparms);
             }
             return $value;
             break;
         case 'lanlist':
             // installed languages.
             $options = e107::getLanguage()->getLanSelectArray();
             if ($options) {
                 if (!is_array($attributes['writeParms'])) {
                     parse_str($attributes['writeParms'], $attributes['writeParms']);
                 }
                 $wparms = $attributes['writeParms'];
                 if (!is_array(varset($wparms['__options']))) {
                     parse_str($wparms['__options'], $wparms['__options']);
                 }
                 $opts = $wparms['__options'];
                 if ($opts['multiple']) {
                     $ret = array();
                     $value = is_array($value) ? $value : explode(',', $value);
                     foreach ($value as $v) {
                         if (isset($options[$v])) {
                             $ret[] = $options[$v];
                         }
                     }
                     $value = implode(', ', $ret);
                 } else {
                     $ret = '';
                     if (isset($options[$value])) {
                         $ret = $options[$value];
                     }
                     $value = $ret;
                 }
                 $value = $value ? vartrue($parms['pre']) . $value . vartrue($parms['post']) : '';
             } else {
                 $value = '';
             }
             break;
             //TODO - order
         //TODO - order
         default:
             //unknown type
             break;
     }
     return $value;
 }
Example #6
0
            exit;
        }
        $adminEdit = TRUE;
        // Flag to indicate admin edit
    } else {
        //Non admin attempting to edit another user's ID
        e107::redirect();
        exit;
    }
}
require_once HEADERF;
// Save user settings (changes only)
//-----------------------------------
if (isset($_POST['updatesettings']) || isset($_POST['SaveValidatedInfo'])) {
    //	$udata = e107::user($inp);	//@deprecated			// Get all the existing user data, including any extended fields
    $udata = e107::user($inp);
    // Get all the existing user data, including any extended fields
    $udata['user_classlist'] = $userMethods->addCommonClasses($udata, FALSE);
}
if (isset($_POST['updatesettings'])) {
    if (!vartrue($pref['auth_method'])) {
        $pref['auth_method'] = 'e107';
    }
    if ($pref['auth_method'] != 'e107') {
        $_POST['password1'] = '';
        $_POST['password2'] = '';
    }
    // Uploaded avatar and/or photo
    if ($file_userfile['error'] != 4) {
        require_once e_HANDLER . 'upload_handler.php';
        require_once e_HANDLER . 'resize_handler.php';
Example #7
0
function renderuser($uid, $mode = "verbose")
{
    global $pref, $sc_style, $user_shortcodes;
    global $EXTENDED_START, $EXTENDED_TABLE, $EXTENDED_END, $USER_SHORT_TEMPLATE, $USER_FULL_TEMPLATE, $USER_TEMPLATE;
    global $user;
    $tp = e107::getParser();
    if (is_array($uid)) {
        $user = $uid;
    } else {
        if (!($user = e107::user($uid))) {
            return FALSE;
        }
    }
    e107::getScBatch('user')->setVars($user);
    if ($mode == 'verbose') {
        return $tp->parseTemplate($USER_FULL_TEMPLATE, TRUE, $user_shortcodes);
    } else {
        return $tp->parseTemplate($USER_SHORT_TEMPLATE, TRUE, $user_shortcodes);
    }
}
Example #8
0
/**
 * @param $parm
 * @usage {USER_EXTENDED=<field_name>.[text|value|icon|text_value].<user_id>}
 * @example {USER_EXTENDED=user_gender.value.5}  will show the value of the extended field user_gender for user #5
 * @return bool|string
 */
function user_extended_shortcode($parm)
{
    $currentUser = e107::user();
    $tp = e107::getParser();
    global $loop_uid, $e107, $sc_style;
    //	include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/lan_user_extended.php');
    $parms = explode('.', $parm);
    if (isset($loop_uid) && intval($loop_uid) == 0) {
        return '';
    }
    $key = $parms[0] . "." . $parms[1];
    $sc_style['USER_EXTENDED']['pre'] = isset($sc_style['USER_EXTENDED'][$key]['pre']) ? $sc_style['USER_EXTENDED'][$key]['pre'] : '';
    $sc_style['USER_EXTENDED']['post'] = isset($sc_style['USER_EXTENDED'][$key]['post']) ? $sc_style['USER_EXTENDED'][$key]['post'] : '';
    //include_once(e_HANDLER.'user_extended_class.php');
    $ueStruct = e107::getUserExt()->user_extended_getStruct();
    //	$ueStruct = e107_user_extended::user_extended_getStruct();
    $uid = intval(varset($parms[2], 0));
    if ($uid == 0) {
        if (isset($loop_uid) && intval($loop_uid) > 0) {
            $uid = $loop_uid;
        } else {
            $uid = USERID;
        }
    }
    $udata = e107::user($uid);
    $udata['user_class'] .= $udata['user_class'] == '' ? '' : ',';
    $udata['user_class'] .= e_UC_PUBLIC . "," . e_UC_MEMBER;
    if (!empty($udata['user_admin'])) {
        $udata['user_class'] .= ',' . e_UC_ADMIN;
    }
    // Need to pick up the 'miscellaneous' category - anything which isn't in a named category. Have to control visibility on a field by field basis
    // And I don't think this should apply to icons
    /**
     *	@todo - must be a better way of picking up the 'Miscellaneous' category
     */
    include_lan(e_LANGUAGEDIR . e_LANGUAGE . '/lan_user.php');
    if ($parms[1] != 'icon' && $parms[0] != LAN_USER_44) {
        $fkeyApplic = varset($ueStruct["user_" . $parms[0]]['user_extended_struct_applicable']);
        $fkeyRead = varset($ueStruct["user_" . $parms[0]]['user_extended_struct_read']);
        $fkeyStruct = varset($ueStruct["user_" . $parms[0]]['user_extended_struct_parms']);
        $ret_cause = 0;
        if (!check_class($fkeyApplic, $udata['user_class'])) {
            $ret_cause = 1;
        }
        if (!check_class($fkeyRead, $udata['user_class'])) {
            $ret_cause = 2;
        }
        if ($ueStruct["user_" . $parms[0]]['user_extended_struct_read'] == e_UC_READONLY && (!ADMIN && $udata['user_id'] != USERID)) {
            $ret_cause = 3;
        }
        if (!ADMIN && substr($fkeyStruct, -1) == 1 && strpos($udata['user_hidden_fields'], "^user_" . $parms[0] . "^") !== FALSE && $uid != USERID) {
            $ret_cause = 4;
        }
        if ($ret_cause != 0) {
            return FALSE;
        }
    }
    if ($parms[1] == 'text_value') {
        //	$_value = $tp->parseTemplate("{USER_EXTENDED={$parms[0]}.value}");
        $_value = user_extended_shortcode($parms[0] . ".value");
        if ($_value) {
            $__pre = isset($sc_style['USER_EXTENDED'][$key]['pre']) ? $sc_style['USER_EXTENDED'][$key]['pre'] : '';
            $__post = isset($sc_style['USER_EXTENDED'][$key]['post']) ? $sc_style['USER_EXTENDED'][$key]['post'] : '';
            //		$_text = $tp->parseTemplate("{USER_EXTENDED={$parms[0]}.text}");
            $_text = user_extended_shortcode($parms[0], ".text");
            $_mid = isset($sc_style['USER_EXTENDED'][$key]['mid']) ? $sc_style['USER_EXTENDED'][$key]['mid'] : '';
            return $__pre . $_text . $_mid . $_value . $__post;
        }
        return false;
    }
    if ($parms[1] == 'text') {
        $text_val = $ueStruct['user_' . $parms[0]]['user_extended_struct_text'];
        if ($text_val) {
            return defined($text_val) ? constant($text_val) : $text_val;
        } else {
            return FALSE;
        }
    }
    if ($parms[1] == 'icon') {
        if (defined(strtoupper($parms[0]) . '_ICON')) {
            return constant(strtoupper($parms[0]) . '_ICON');
        } elseif (is_readable(e_IMAGE . "user_icons/user_{$parms[0]}.png")) {
            return "<img src='" . e_IMAGE_ABS . "user_icons/user_{$parms[0]}.png' style='width:16px; height:16px' alt='' />";
        } elseif (is_readable(e_IMAGE . "user_icons/{$parms[0]}.png")) {
            return "<img src='" . e_IMAGE_ABS . "user_icons/{$parms[0]}.png' style='width:16px; height:16px' alt='' />";
        }
        //return '';
        return FALSE;
    }
    if ($parms[1] == 'value') {
        $uVal = str_replace(chr(1), '', $udata['user_' . $parms[0]]);
        switch ($ueStruct["user_" . $parms[0]]['user_extended_struct_type']) {
            case EUF_DB_FIELD:
                // check for db_lookup type
                $tmp = explode(',', $ueStruct['user_' . $parms[0]]['user_extended_struct_values']);
                $sql_ue = new db();
                // Use our own DB object to avoid conflicts
                if ($sql_ue->select($tmp[0], "{$tmp[1]}, {$tmp[2]}", "{$tmp[1]} = '{$uVal}'")) {
                    $row = $sql_ue->fetch();
                    $ret_data = $row[$tmp[2]];
                } else {
                    $ret_data = FALSE;
                }
                break;
            case EUF_DATE:
                //check for 0000-00-00 in date field
                if ($uVal == '0000-00-00') {
                    $uVal = '';
                }
                $ret_data = $uVal;
                break;
            case EUF_PREDEFINED:
                // Predefined field - have to look up display string in relevant file
                $ret_data = e107::getUserExt()->user_extended_display_text($ueStruct['user_' . $parms[0]]['user_extended_struct_values'], $uVal);
                break;
            default:
                $ret_data = $uVal;
        }
        if ($ret_data != '') {
            return $tp->toHTML($ret_data, TRUE, 'no_make_clickable', "class:{$udata['user_class']}");
        }
        return FALSE;
    }
    // return TRUE;
    return FALSE;
}
Example #9
0
 /**
  * Unban user trigger
  * @param int $userid
  * @return void
  */
 public function ListUnbanTrigger($userid)
 {
     $sql = e107::getDb();
     $sysuser = e107::getSystemUser($userid, false);
     if (!$sysuser->getId()) {
         e107::getMessage()->addError(USRLAN_223);
         return;
     }
     $row = e107::user($userid);
     $sql->update("user", "user_ban='0' WHERE user_id='" . $userid . "' ");
     $sql->delete("banlist", " banlist_ip='{$row['user_ip']}' ");
     e107::getAdminLog()->log_event('USET_06', str_replace(array('--UID--', '--NAME--', '--EMAIL--'), array($sysuser->getId(), $sysuser->getName(), $sysuser->getValue('email')), USRLAN_162), E_LOG_INFORMATIVE);
     e107::getMessage()->addSuccess("(" . $sysuser->getId() . "." . $sysuser->getName() . " - " . $sysuser->getValue('email') . ") " . USRLAN_9);
     // List data reload
     $this->getTreeModel()->load(true);
 }
Example #10
0
function class_list($uid = '')
{
    $clist = array();
    if (is_numeric($uid) || USER === true) {
        if (is_numeric($uid)) {
            if ($ud = e107::user($uid)) {
                $admin_status = $ud['user_admin'];
                $class_list = $ud['user_class'];
                $admin_perms = $ud['user_perms'];
            } else {
                $admin_status = false;
                $class_list = "";
                $admin_perms = "";
            }
        } else {
            $admin_status = ADMIN;
            $class_list = USERCLASS;
            $admin_perms = ADMINPERMS;
        }
        if ($class_list) {
            $clist = explode(',', $class_list);
        }
        $clist[] = e_UC_MEMBER;
        if ($admin_status == true) {
            $clist[] = e_UC_ADMIN;
        }
        if ($admin_perms === '0') {
            $clist[] = e_UC_MAINADMIN;
        }
    } else {
        $clist[] = e_UC_GUEST;
    }
    $clist[] = e_UC_READONLY;
    $clist[] = e_UC_PUBLIC;
    return implode(',', $clist);
}
 function sc_anteup_donation_donator($parm = '')
 {
     $userInfo = e107::user($this->var['user_id']);
     return $userInfo['user_name'];
 }
 /**
  * Comment author.
  */
 function sc_latest_comment_author()
 {
     $user = e107::user($this->var['comment_author_id']);
     // return vartrue($user['user_login'], $user['user_name']);
     return $user['user_name'];
 }
Example #13
0
 function threadGetUserViewed($uid = USERID)
 {
     $e107 = e107::getInstance();
     if ($uid == USERID) {
         $viewed = $e107->currentUser['user_plugin_forum_viewed'];
     } else {
         $tmp = e107::user($uid);
         $viewed = $tmp['user_plugin_forum_viewed'];
         unset($tmp);
     }
     return explode(',', $viewed);
 }