+// "Calculates" password strength
+function calculatePasswordStrength ($password, $configEntry = 'min_password_length') {
+ // Default score
+ $score = 1;
+
+ if ((strlen($password) < 1) || (strlen($password) < getConfig($configEntry))) {
+ // Is to weak
+ return 0;
+ } // END - if
+
+ // At least 8 chars long?
+ if (strlen($password) >= 8) {
+ // Add score
+ $score++;
+ } // END - if
+
+ // At least 10 chars long?
+ if (strlen($password) >= 10) {
+ // Add score
+ $score++;
+ } // END - if
+
+ // Lower and upper cases?
+ if ((preg_match('/[a-z]/', $password)) && (preg_match('/[A-Z]/', $password))) {
+ // Add score
+ $score++;
+ } // END - if
+
+ // Also numbers?
+ if (preg_match('/[0-9]/', $password)) {
+ // Add score
+ $score++;
+ } // END - if
+
+ // Special characters?
+ if (preg_match('/.[!,@,#,$,%,^,&,*,?,\/,_,~,+,-,(,)]/', $password)) {
+ // Add score
+ $score++;
+ } // END - if
+
+ // Return password score
+ return $score;
+}
+
+// "Translates" password strength/score
+function translatePasswordStrength ($strength) {
+ // Return it translated
+ return '{--PASSWORD_SCORE_' . bigintval($strength) . '--}';
+}
+
+// Checks whether given password is strong enough
+function isStrongPassword ($password) {
+ // Determine it
+ return (calculatePasswordStrength($password) >= getConfig('min_password_score'));
+}
+
+// "Getter" for base path from theme
+function getBasePathFromTheme ($theme) {
+ return sprintf('%stheme/%s/css/', getPath(), $theme);
+}
+