コード例 #1
0
 /**
  * 根据标签查找联系人
  * @param Group_Contact $group_contact
  * @return array
  */
 public function find_by_tags(Group_Contact $group_contact)
 {
     $keys = array();
     $others = array();
     //组织SQL
     foreach ($this->map as $field) {
         $name = (string) $field->name;
         $getprop = (string) $field->accessor;
         if ($getprop) {
             $value = call_user_func(array($group_contact, $getprop));
             if ($value) {
                 if (in_array($name, array('tels', 'emails', 'addresses', 'ims', 'urls', 'relations', 'events'))) {
                     if (in_array($name, array('tels', 'emails', 'ims'))) {
                         $others[$name] = $value;
                     }
                 } else {
                     $keys['gcp_contacts.' . $name] = $value;
                 }
             }
         }
     }
     if (!array_key_exists('gcp_contacts.deleted', $keys)) {
         $keys['gcp_contacts.deleted'] = 0;
     }
     if (!empty($others)) {
         $this->db->select('gcp_contacts.*')->from('gcp_contacts')->where($keys);
         $type = key($others);
         $other = $others[$type];
         $tmp = array();
         foreach ($other as $val) {
             $tmp[] = $val['value'];
         }
         $this->db->join('gcp_' . $type, 'gcp_contacts.gcid = gcp_' . $type . '.gcid', '', 'LEFT')->in('gcp_' . $type . '.value', $tmp);
         $query = $this->db->get();
     } else {
         $query = $this->db->getwhere('gcp_contacts', $keys);
     }
     $result = array();
     if ($query->count()) {
         $rows = $query->result_array(FALSE);
         foreach ($rows as $row) {
             $result[] = $row['gcid'];
         }
     }
     return $result;
 }
コード例 #2
0
ファイル: user.php プロジェクト: KasaiDot/SharkDev
 public static function login($pseudo, $password)
 {
     $password = hash('sha384', $password);
     $user = DataBase::get('users', array(), array('pseudo' => $pseudo, 'password' => $password));
     if (!count($user) || $user === false) {
         $user = DataBase::get('users', array(), array('email' => $pseudo, 'password' => $password));
     }
     if (count($user) && $user !== false) {
         if (!$user[0]['activated']) {
             return false;
         }
         $_SESSION['skyer-user'] = $user[0];
         $_SESSION['skyer-user']['guest'] = false;
         return true;
     } else {
         return false;
     }
 }
コード例 #3
0
ファイル: login.php プロジェクト: KasaiDot/SharkDev
                    $user = DataBase::get('users', array(), array('email' => $_POST['pseudo']));
                }
                if (count($user) && $user !== false) {
                    $user = $user[0];
                    sendMail($user['email'], Config::get('SITE_TITLE'), Config::get('SITE_TITLE'), 'Password reset', 'Dear ' . $user['firstname'] . ' ' . $user['lastname'] . ",<br /><br />Next to your request, your password will be reset. Click the link below to reset it.<br />If you didn't request us to reset your password, simply ignore this mail.<br /><br /><a href=\"http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}?action=reset&token=" . $user['token'] . "\">Reset your password</a><br /><br /><small>Sent from Skyer</small>");
                    $showForgotSubmitted = true;
                } else {
                    die('<h3>User not found</h3>');
                }
            } else {
                $showForgot = true;
            }
            break;
        case 'reset':
            if (isset($_GET['token'])) {
                $user = DataBase::get('users', array(), array('token' => $_GET['token']));
                if (count($user) && $user !== false) {
                    $pass = md5(uniqid(rand(), true));
                    DataBase::update('users', array('password' => hash('sha384', $pass)), array('token' => $_GET['token']));
                    $showReset = true;
                } else {
                    die('<h3>User not found</h3>');
                }
            } else {
                die('<h3>Bad request</h3>');
            }
            break;
    }
}
if (!User::isGuest() && (!isset($_GET['action']) || $_GET['action'] !== 'logout')) {
    header('Location: index.php');
コード例 #4
0
ファイル: default.php プロジェクト: KasaiDot/SharkDev
	                                    <i class="fa fa-envelope"></i> <strong>Read All Messages</strong>
	                                </a>
	                            </div>
	                        </li>
	                    </ul>
	                </li>
	                <li class="dropdown">
	                    <a class="dropdown-toggle count-info" data-toggle="dropdown" href="#">
	                        <i class="fa fa-bell"></i>  <span class="label label-primary" content="unread-alerts"><?php 
    echo $unreadAlerts;
    ?>
</span>
	                    </a>
	                    <ul class="dropdown-menu dropdown-alerts">
                            <?php 
    $dir = DataBase::get('messages', array('ID', 'recipient', 'sender', 'recipient_dir', 'sender_dir', 'subject', 'sent', 'opened'), array('recipient' => User::getID(), 'recipient_dir' => 'alerts', 'opened' => 0));
    foreach ($dir as $i => $mail) {
        $sender = User::getUserFromID($mail['sender']);
        $mail['sender_ID'] = $mail['sender'];
        $mail['sender'] = $sender['fullname'];
        $recipient = User::getUserFromID($mail['recipient']);
        $mail['recipient_ID'] = $mail['recipient'];
        $mail['recipient'] = $recipient['fullname'];
        ?>
                            <li>
	                            <a href="mailbox.php#/view/<?php 
        echo $mail['ID'];
        ?>
">
	                                <div>
	                                    <i class="fa fa-envelope fa-fw"></i> <?php 
コード例 #5
0
ファイル: CourseXML.php プロジェクト: nikosv/openeclass
    /**
     * Auto-Generate Data for a specific course.
     * 
     * @global string $urlServer
     * @global string $license
     * @global string $webDir
     * @global string $siteName
     * @global string $Institution
     * @global string $InstitutionUrl
     * @param  int    $courseId
     * @return array
     */
    public static function getAutogenData($courseId) {
        global $urlServer, $license, $webDir, $currentCourseLanguage, $language;
        global $siteName, $Institution, $InstitutionUrl; // NOTICE: DO NOT remove these global vars, include of common.inc, etc, below requires them
        $data = array();
        
        if (empty($currentCourseLanguage)) {
            $plang = $language;
        } else {
            $plang = $currentCourseLanguage;
        }

        $course = Database::get()->querySingle("SELECT * FROM course WHERE id = ?d", intval($courseId));
        if (!$course) {
            return array();
        }
        
        // course language
        $clang = $course->lang;
        $data['course_language'] = $clang;
        $data['course_language_' . $clang] = $GLOBALS['langNameOfLang'][langcode_to_name($clang)];
        // en
        $data['course_language_en'] = ucfirst(langcode_to_name($clang));
        // el
        include("${webDir}/lang/el/common.inc.php");
        include("${webDir}/lang/el/messages.inc.php");
        $data['course_language_el'] = $langNameOfLang[langcode_to_name($clang)]; // do not use GLOBALS here as it will not work
        // revert messages back to current language
        include("${webDir}/lang/" . $plang . "/common.inc.php");
        include("${webDir}/lang/" . $plang . "/messages.inc.php");

        $data['course_url'] = $urlServer . 'courses/' . $course->code;
        $data['course_title_' . $clang] = $course->title;
        $data['course_keywords_' . $clang] = $course->keywords;

        // course license
        if (!empty($course->course_license)) {
            $data['course_license_' . $clang] = $license[$course->course_license]['title'];
            // en
            include("${webDir}/lang/en/common.inc.php");
            include("${webDir}/lang/en/messages.inc.php");
            include("${webDir}/include/license_info.php");
            $data['course_license_en'] = $license[$course->course_license]['title'];
            //el
            include("${webDir}/lang/el/common.inc.php");
            include("${webDir}/lang/el/messages.inc.php");
            include("${webDir}/include/license_info.php");
            $data['course_license_el'] = $license[$course->course_license]['title'];
            // revert messages back to current language
            include("${webDir}/lang/" . $clang . "/common.inc.php");
            include("${webDir}/lang/" . $clang . "/messages.inc.php");
            include("${webDir}/include/license_info.php");
        } else {
            $data['course_license_' . $clang] = '';
            if ($clang != 'en') {
                $data['course_license_en'] = '';
            }
            if ($clang != 'el') {
                $data['course_license_el'] = '';
            }
        }

        // first creation date
        $ts = strtotime($course->created);
        if ($ts > 0) {
            $data['course_firstCreateDate'] = date("Y-m-d\TH:i:sP", $ts);
        }

        // course review data
        $review = Database::get()->querySingle("SELECT * FROM course_review WHERE course_id = ?d", intval($courseId));
        if ($review) {
            $ts = strtotime($review->last_review);
            if ($ts > 0) {
                $data['course_lastLevelConfirmation'] = date("Y-m-d\TH:i:sP", $ts);
            }
            $level = intval($review->level);
            if ($level >= self::A_MINUS_LEVEL) {
                $data['course_confirmAMinusLevel'] = 'true';
            }
            if ($level >= self::A_LEVEL) {
                $data['course_confirmALevel'] = 'true';
            }
            if ($level >= self::A_PLUS_LEVEL) {
                $data['course_confirmAPlusLevel'] = 'true';
            }
        }

        // course description types
        $desctypes = array(
            'course_contents_' . $clang => 'syllabus',
            'course_objectives_' . $clang => 'objectives',
            'course_literature_' . $clang => 'bibliography',
            'course_teachingMethod_' . $clang => 'teaching_method',
            'course_assessmentMethod_' . $clang => 'assessment_method',
            'course_prerequisites_' . $clang => 'prerequisites');
        foreach ($desctypes as $xmlkey => $desctype) {
            $resDesc = Database::get()->queryArray("SELECT cd.comments
                    FROM course_description cd
                    LEFT JOIN course_description_type t on (t.id = cd.type)
                    WHERE cd.course_id = ?d AND t.`" . $desctype . "` = 1
                    ORDER BY cd.order", intval($courseId));
            $commDesc = '';
            $i = 0;
            foreach ($resDesc as $row) {
                if ($i > 0) {
                    $commDesc .= ' ';
                }
                $commDesc .= strip_tags($row->comments);
                $i++;
            }
            if (strlen($commDesc) > 0) {
                $data[$xmlkey] = $commDesc;
            }
        }

        // turn visible units to associative array
        $unitsCount = 0;
        DataBase::get()->queryFunc("SELECT title, comments 
                                      FROM course_units
                                     WHERE visible > 0 AND course_id = ?d", function($unit) use (&$data, &$unitsCount) {
            $data['course_unit_title'][$unitsCount] = $unit->title;
            $data['course_unit_description'][$unitsCount] = strip_tags($unit->comments);
            $unitsCount++; // also serves as array index, starting from 0
        }, $courseId);
        $data['course_numberOfUnits'] = $unitsCount;

        return $data;
    }
コード例 #6
0
ファイル: mailbox-i.php プロジェクト: KasaiDot/SharkDev
            die('<h3>That\'s not your mail !</h3>');
        }
        die('true');
        break;
    case 'unread':
        $unread = DataBase::query('SELECT COUNT(*) FROM messages WHERE opened = 0 AND recipient_dir = ' . DataBase::_secure($_GET['folder']) . ' AND recipient = ' . User::getID())->fetch()[0];
        if (strval($unread)) {
            die($unread);
        } else {
            die;
        }
        break;
    case 'send':
        // check message HTML does not comport malicious tags
        // for example with HTMLPurify PHP library
        $recipient = DataBase::get('users', array('ID'), array('fullname' => $_POST['recipient']));
        if (!count($recipient) || $recipient === false) {
            die('false');
        }
        if (DataBase::insert('messages', array('sender' => User::getID(), 'recipient' => $recipient[0]['ID'], 'subject' => htmlspecialchars($_POST['subject']), 'content' => $_POST['content'], 'sent' => array('NOW()'), 'opened' => 0, 'answerTo' => 0, 'sender_dir' => 'sent', 'recipient_dir' => 'inbox'))) {
            if (DataBase::insert('messages', array('sender' => User::getID(), 'recipient' => $recipient[0]['ID'], 'subject' => htmlspecialchars($_POST['subject']), 'content' => $_POST['content'], 'sent' => array('NOW()'), 'opened' => 0, 'answerTo' => 0, 'sender_dir' => 'sent', 'recipient_dir' => 'sent'))) {
            }
            die('true');
        } else {
            die('false');
        }
        break;
    default:
        die('<h3>Unknwon action</h3>');
        break;
}
コード例 #7
0
ファイル: register.php プロジェクト: KasaiDot/SharkDev
 } elseif (strlen($_POST['password']) < 6) {
     $err = 'Password must be at least 6 characters';
 } elseif (strlen($_POST['password']) > 60) {
     $err = 'Password must be shorter than 60 characters';
 } elseif ($_POST['password'] !== $_POST['password-confirm']) {
     $err = 'The two passwords does not match';
 } elseif ($_POST['email'] !== $_POST['email-confirm']) {
     $err = 'The two email does not match';
 } elseif (!isset($_POST['agree-terms']) || !$_POST['agree-terms']) {
     $err = 'You must agree terms and privacy';
 } else {
     $user = DataBase::get('users', array(), array('pseudo' => $_POST['pseudo']));
     if (count($user) && $user !== false) {
         $err = 'This pseudo is already used !';
     } else {
         $user = DataBase::get('users', array(), array('email' => $_POST['email']));
         if (count($user) && $user !== false) {
             $err = 'This email is already used !';
         } else {
             $token = md5(uniqid(rand(), true)) . md5(uniqid(rand(), true));
             if (DataBase::insert('users', array('pseudo' => $_POST['pseudo'], 'password' => hash('sha384', $_POST['password']), 'email' => $_POST['email'], 'firstname' => $_POST['firstname'], 'lastname' => $_POST['lastname'], 'fullname' => $_POST['firstname'] . ' ' . $_POST['lastname'], 'activated' => 0, 'rights' => 1, 'register' => 'NOW()', 'reputation' => 0, 'token' => $token))) {
                 try {
                     chdir(__DIR__ . '/server/users');
                     Lib::recurseCopy('.model', $_POST['pseudo']);
                     sendMail($_POST['email'], Config::get('SITE_TITLE'), Config::get('SITE_EMAIL'), 'Activate your account', 'Dear ' . $_POST['firstname'] . ' ' . $_POST['lastname'] . ",<br /><br />You've just created an account. To activate it, use the link below.<br /><br /><a href=\"http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}?activate=" . $token . "\">Activate your account</a><br /><br /><small>Sent from Skyer</small>");
                     $registered = true;
                 } catch (Exception $e) {
                     $err = 'Internal disk error. Please try again.';
                 }
             } else {
                 $err = 'DataBase error. Please try again.';