one more identity action to process
[squirrelmail.git] / functions / identity.php
index ade32603c17f8ae4db6a34d4b9885034e7da1375..17215555da88ccf1dfafa2d6fb5bbc5a98a0f0f2 100644 (file)
  *
  * @version $Id$
  * @package squirrelmail
+ * @since 1.4.2
  */
 
-/** Used to simplify includes */
+/** Used to simplify includes
+ * @ignore
+ */
 if (!defined('SM_PATH')) {
     define('SM_PATH','../');
 }
 
+/** preference and signature functions */
 include_once(SM_PATH . 'include/load_prefs.php');
 
 /**
-* Returns an array of all the identities.
-* Array is keyed: full_name, reply_to, email_address, index, signature
-* @return array full_name,reply_to,email_address,index,signature
-*/
+ * Returns an array of all the identities.
+ * Array is keyed: full_name, reply_to, email_address, index, signature
+ * @return array full_name,reply_to,email_address,index,signature
+ * @since 1.4.2
+ */
 function get_identities() {
 
     global $username, $data_dir, $domain;
@@ -63,6 +68,7 @@ function get_identities() {
  * Function to save the identities array
  *
  * @param  array     $identities     Array of identities
+ * @since 1.5.1 and 1.4.5
  */
 function save_identities($identities) {
 
@@ -112,6 +118,7 @@ function save_identities($identities) {
  * @param   int         $id             Identity to modify
  * @param   string      $action         Action to perform
  * @return  array
+ * @since 1.5.1 and 1.4.5
  */
 function sqfixidentities( $identities, $id, $action ) {
 
@@ -135,6 +142,10 @@ function sqfixidentities( $identities, $id, $action ) {
 
                 if ($key == $id) {
                     $fixed[0] = $ident;
+
+                    // inform plugins about renumbering of ids
+                    do_hook('options_identities_renumber', $id, 'default');
+
                     continue 2;
                 } else {
                     $fixed[$i+1] = $ident;
@@ -145,6 +156,10 @@ function sqfixidentities( $identities, $id, $action ) {
 
                 if ($key == ($id - 1)) {
                     $tmp_hold = $ident;
+
+                    // inform plugins about renumbering of ids
+                    do_hook('options_identities_renumber', $id , $id - 1);
+
                     continue 2;
                 } else {
                     $fixed[$i] = $ident;
@@ -159,14 +174,25 @@ function sqfixidentities( $identities, $id, $action ) {
             case 'delete':
 
                 if ($key == $id) {
+                    // inform plugins about deleted id
+                    do_hook('options_identities_process', $action, $id);
+
                     continue 2;
                 } else {
                     $fixed[$i] = $ident;
                 }
                 break;
 
-            // we should never hit this but just in case //
+            // Process actions from plugins and save/update action //
             default:
+                /**
+                 * send action and id information. number of hook arguments 
+                 * differs from 1.4.4 or older and 1.5.0. count($args) can 
+                 * be used to detect modified hook. Older hook does not 
+                 * provide information that can be useful for plugins.
+                 */
+                do_hook('options_identities_process', $action, $id);
+
                 $fixed[$i] = $ident;
 
         }
@@ -185,6 +211,7 @@ function sqfixidentities( $identities, $id, $action ) {
  *
  * @param   array   $identity   Identitiy Array
  * @return  boolean
+ * @since 1.5.1 and 1.4.5
  */
 function empty_identity($ident) {
     if (empty($ident['full_name']) && empty($ident['email_address']) && empty($ident['signature']) && empty($ident['reply_to'])) {
@@ -194,4 +221,4 @@ function empty_identity($ident) {
     }
 }
 
-?>
+?>
\ No newline at end of file